原文:http://allthingsoracle.com/histograms-part-1-why/
在这篇文章里,作者Jonathan Lewis给出一个例子,结合Oracle计算直方图的原理,解释了直方图几点缺陷:
1. 取样
默认模式下,Oracle只取表中一部分数据作为样本计算直方图。假如数据倾斜非常厉害,如90%以上都是某个值,另一个值很少出现。取样时,没有将极少值取到。就会造成直方图失真,进而低效的执行计划!
2. 收集统计信息的时间点
默认情况下,Oracle在晚上收集统计信息。对于订单处理型,订单的状态处在变化中。晚上收集的统计信息和运行Query时数据的统计信息已经不一致了。这也会造成不恰当的执行计划