在DB2优化器中使用分布统计信息
2009-12-23 15:00:17 来源:WEB开发网核心提示:DB2优化器对分布统计信息的使用 —— 示例我们来看一个完整的示例,在此例中,在DB2优化器中使用分布统计信息(3),DB2 优化器可以使用分布统计信息来更合理地估计过滤因子,以便生成更好的访问计划,在没有分布统计信息,而只有 CARS 表的基本统计信息及其索引的情况下,这个示例查询从已经定义好
DB2优化器对分布统计信息的使用 —— 示例
我们来看一个完整的示例,在此例中,DB2 优化器可以使用分布统计信息来更合理地估计过滤因子,以便生成更好的访问计划。
这个示例查询从已经定义好的 CARS 表中读取数据。对于表 CARS 中的汽车数据,有以下假设:
该表的基数为 1,000,000,也就是说该表包含 1,000,000 行。
表中 99.9% 的汽车是已经完工(“STATE” 列 = 100)的,这些汽车的信息相关必须保留,以用于后续处理(投述管理、质量保证等)。剩下的 1,000 辆汽车目前还处在制造流程中。
在该表中,制造商提供的从 A 到 J 的 10 种不同汽车型号(“TYPE” 列)几乎以相同的频率出现。
注意: 脚本 create_table_cars.sql 用于创建前述 CARS 表,包括 “STATE” 列和 “TYPE” 列上的索引,该脚本可以通过本文 下载。这个示例表是在 DB2 SAMPLE 数据库中(命令 db2sampl),使用 DBM CFG 和 DB CFG 的默认设置创建的。
示例查询选择型号为 A 且正处在制造流程中、尚未完工的所有汽车:
SELECT * FROM CARS WHERE STATE < 100 AND TYPE = 'A'
首先来分析一下,在没有分布统计信息,而只有 CARS 表的基本统计信息及其索引的情况下,优化器选择的访问计划是怎样的。
图 1. 没有分布统计信息时示例查询的访问计划
更多精彩
赞助商链接