在频率直方图中,每个不同的列值都对应于直方图的单个存储桶。
由于每个值都有其专用的存储桶,因此某些存储桶可能具有多个值,而其他存储桶则只有少许几个值。
频率直方图的一个类比是对硬币进行分类,以便每个硬币最初都拥有自己的存储桶。例如,第一个便士位于存储桶1中,第二个便士位于存储桶2中,第一个镍位于存储桶3中,依此类推。然后,您将所有几分钱都整合到一个便士桶中,将所有镍币整合到一个镍币桶中,依此类推。
频率直方图取决于请求的直方图桶的数量。 (如果唯一值小于254 则用频率直方图)
如“ Oracle数据库如何选择直方图类型 ”中的逻辑图所示,当满足以下条件时,数据库将创建频率直方图:
- NDV小于或等于n,其中n是直方图存储桶数(默认值
254)。例如,该
sh.countries.country_subregion_id列具有8个不同的值,顺序为从52792到52799。如果n是默认值254,则优化器将创建频率直方图,因为8 <= 254。 - 统计信息收集过程中的
estimate_percent参数DBMS_STATS设置为用户指定的值或AUTO_SAMPLE_SIZE。
从Oracle Database 12c开始,如果采样大小为默认值AUTO_SAMPLE_SIZE,则数据库将从全表扫描中创建频率直方图。对于所有其他采样百分比规格,数据库从采样中得出频率直方图。
在Oracle Database 12c 以前的版本中,数据库基于一个较小的样本来收集直方图,这意味着低频值通常不会出现在样本中。在这种情况下使用密度有时会导致优化器高估选择性。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




