当前位置: 首页 > 科技观察

Oracle数据库中直方图对执行计划的影响

时间:2023-03-12 21:52:07 科技观察

在Oracle数据库中,CBO会默认目标列的数据均匀分布在它的最小值low_value和最大值high_value之间,计算出目标根据均匀分布原则应用查询条件后列的可选择性和结果集的基数。如果在某个目标上收集直方图,则意味着CBO不再认为目标列上的数据是均匀分布的。CBO将使用列上的直方图统计信息来计算返回结果集的基数。验证直方图对执行计划影响的步骤:1.创建表T12,向表中插入高度偏斜的数据3.在B字段上创建索引4.删除表中的直方图信息5.查看直方图informationHISTOGRAM:NONE表示没有直方图信息。6、查询b=2的执行计划从执行计划可以看出:该查询使用了全表扫描,因为T1表的数据被认为是均匀分布的,CBO认为全表扫描速度更快比去索引会更快7.收集直方图信息8.查询直方图信息HISTOGRAM:FREQUENCY频率直方图可以看出此时直方图信息已经在表中9.查看b=的执行计划2再次。这时可以看到,执行计划已经取了索引,结果是正确的!