:
(此处留做读者思考时间)
1-创建驱动表E表上的一个覆盖索引;
2-给not exists 子查询内加个/*+ Hash_AJ */的hint:
优化后的执行计划:
(图4)...如果根据图1的执行计划来进行优化, 那么我会给出下面的优化建议:
1-创建一个函数索引(因为没有具体的数据分布信息,暂用这种极限优化思维),对应的where条件的写法也要配合索引进行改写;
2-再把not...我的这个优化方法,如果真如图1执行计划显示的那样, 预期优化后的执行时间也就十几毫秒. 但是再仔细想一想,事实应该并非如此....驱动表E返回的结果集大, 虽然我上面的优化方法在驱动表几十万记录的情况下也远比优化前效率高很多, 但是相对来说不如hash join更适合这个SQL,而且用了hash join, 隐式类型转换的问题也就无关紧要了...在这种素材信息给的不是很全的案例上做二次分析, 消耗的时间远比直接分析要多得多.
(完)