为什么生产系统平均执行时间60多秒, 测试执行只有0.55秒, 这个作者没有给出解释....同时cost对应的891告诉我们, 这个E表不算大,最多也就几十万记录,几十M大小, 同时B表也不大,应该只有几万条记录....我的这个优化方法,如果真如图1执行计划显示的那样, 预期优化后的执行时间也就十几毫秒. 但是再仔细想一想,事实应该并非如此....表的统计信息一般是在凌晨收集, 在那个时间段, 业务数据没有代表性,生成的执行计划也是不可信的. 所以这个SQL就不能按照图1执行计划显示的数据去优化....总结:
原文作者通篇没有提到为什么要使用hash join的执行计划(跟图1所示执行计划的优化思路是不符的,相反的).这种估值明显不准的执行计划, 一般在调试时会生成带A-rows的执行计划.