1)IN EXISTS 查询的有关hint
HASH_SJ NL_SJ MERGE_SJ
HASH_AJ NL_AJ MERGE_AJ
2)如果子查询中是正常表(或者临时表),执行计划一般会走HASH JOIN (SEMI)
可是如果是table()表,执行计划一般NESTED LOOPS (SEMI)。
如此则效率会较低;可以进行 /*+ HASH_SJ */ 提示
1)IN EXISTS 查询的有关hint
HASH_SJ NL_SJ MERGE_SJ
HASH_AJ NL_AJ MERGE_AJ
2)如果子查询中是正常表(或者临时表),执行计划一般会走HASH JOIN (SEMI)
可是如果是table()表,执行计划一般NESTED LOOPS (SEMI)。
如此则效率会较低;可以进行 /*+ HASH_SJ */ 提示
eg.
select content
from t_record t
where t.stamp > trunc(sysdate)
and provinceid in
(select column_value from table(pck_rpt.f_comma_to_table('1,8,1,9,10,11,')))
--(select to_number(c_value) from xyz_temp)
-- 按照上面的结论,可以加入hint提示,没想到却出现600内部错误!
--ORA-00600: internal error code, arguments: [15160], [], [], [], [], [], [], []
select content
from t_record t
where t.stamp > trunc(sysdate)
and provinceid in
(select /*+ HASH_SJ */ column_value from table(pck_rpt.f_comma_to_table('1,8,1,9,10,11,')))
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9844649/viewspace-579989/ ,如需转载,请注明出处,否则将追究法律责任。