背景:两个百万级数据量表需要连接,加全索引的情况下速度仍不见改善,苦查一下午解决问题未遂。
解决:经大佬指点了解到oracle优化器提示,使用/*+ USE_HASH(table1 table2) */或者/*+ USE_MERGE(table1 table2) */来指导优化器选择正确的联接方法。
使用方法示例:
SELECT /*+ USE_MERGE(a b) */ a.*
from table_a a
inner join table_b b on a.id=b.aid
使用结果:
从中午午休一小时没跑完变到10秒
觉恐怖如斯,遂记录
另外,可通过解释执行计划查看索引执行情况
另,学习oracle优化器提示可参考oracle优化器提示资料