这是我的查询:
select count(*)
from email_prod_junc j
inner join trckd_prod t5 on j.trckd_prod_sk = t5.trckd_prod_sk
inner join prod_brnd b on t5.prod_brnd_sk = b.prod_brnd_sk
inner join email e on j.email_sk = e.email_sk
inner join dm_geography_sales_pos_uniq u on (u.emp_sk = e.emp_sk and u.prod_brnd_sk = b.prod_brnd_sk)
解释计划说:
DM_GEOGRAPHY_SALES_POS_UNIQ 和 EMAIL_PROD_JUNC 之间的笛卡尔连接。
我不明白为什么,因为每个表都有一个连接条件。
我通过添加 ORDERED 提示解决了这个问题:
select /*+ ordered */
我从以下渠道得到信息here http://www.dba-oracle.com/art_builder_sql_execution.htm
如果您按照希望连接的顺序指定表并使用此提示,Oracle 不会花时间尝试找出最佳连接顺序,它只会按照 FROM 子句中的顺序连接它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)