oracle的统计信息、直方图以及它如何影响执行计划的生成与选择
发布网友
发布时间:2024-10-24 17:06
我来回答
共1个回答
热心网友
时间:2024-10-24 19:05
Oracle数据库优化器在生成SQL执行计划时,会计算每一条执行路径的成本,选取成本最低的执行方案。为了准确估算成本,优化器需要对被查询的对象(表和索引等)以及系统有足够的描述信息,这包括统计信息。
统计信息包含表、索引和列的多种数据描述。
表的统计信息包括行数、数据块数、空块数、块的使用率、行连接和迁移数量、行平均大小等。
索引的统计信息涉及深度、叶子块数量、集群因子、唯一值数量等。
列的统计信息则关注唯一值数、最小值、最大值、选择率、数据分布情况(如直方图信息)以及NULL值数量。
直方图是一种统计信息,它以图表形式直观展示数据分布情况,帮助优化器更准确地估算执行计划成本,尤其是在数据分布严重偏斜时。直方图通过构建质量分布图,如数量与频度的连接矩形图,展示数据分布特征。在Oracle中,直方图有助于优化器在数据偏斜时做出更佳决策,例如,当少数值占据表大部分数据时,索引可能无法有效减少查询所需的I/O操作。创建直方图能让优化器根据值的分布情况,决定何时使用索引,何时返回表中大部分记录。
直方图的创建无需特定条件*,可以针对表上的任一列创建。直方图的准确性依赖于存储桶数量和列的distinct值数,因此在创建时需合理估计存储桶数量,以确保统计结果的准确性和优化器生成的执行计划的高效性。