Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询处理 » 查询优化与执行 » 优化程序的工作原理 » 优化程序估计值和列统计信息

 

优化程序使用列统计信息的方式

优化程序所使用的列统计信息的最重要的组成部分是直方图。直方图存储有关值在列中的分布情况的信息。在 SQL Anywhere 中,直方图表示列的数据分布的方式为:将列的域划分为一组连续的值域(也称为);对于每个值域(即桶),记下表中有多少行的列值在桶内。

SQL Anywhere 会特别注意出现在表的大量行中的单一列值。重要的单值选择性保留在单个的直方图桶(例如,包括列域中的单个值的桶)中。SQL Anywhere 会尝试在每个直方图中保留最少数量的单个桶,通常是在 10 与 100 之间,具体取决于表的大小。此外,所有选择性大于 1% 的单个值均以单个桶的形式保留。因此,给定列的直方图会记下该列的前 N 个单值选择性,而值 N 取决于表的大小和大于 1% 的单值选择性的数量。

如果满足值域的最低数量,则低选择性频率一旦出现就会被高选择性频率替换。直方图在看到了足够多的选择性大于 1% 的值后,将只拥有多于最低数量的单值域。

有关列统计信息的详细信息,请参见SYSCOLSTAT 系统视图