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

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

 

更新列统计信息以提高优化程序性能

列统计信息永久地存储在数据库的系统表 ISYSCOLSTAT 中。为持续提高优化程序的性能,数据库服务器会在处理任何 SELECT、INSERT、UPDATE 或 DELETE 语句(包括单行语句)时自动更新列统计信息。方法是:监控满足引用表或列的任何谓语的行数,将此行数与估计的行数进行比较,然后在必要时对现有统计信息进行更新。

如果可以使用更准确的列统计信息,优化程序就可以计算出更适合的估计值,并提高后继查询的性能。

可以使用数据库选项设置是否更新列统计信息。update_statistics 数据库选项控制是否在执行查询时更新列统计信息,而 collect_statistics_on_dml_updates 数据库选项控制是否在执行修改数据的 DML 语句(例如,LOAD、INSERT、DELETE 和 UPDATE)时更新统计信息。

如果您怀疑性能不佳是由于统计信息没有准确反映当前列值所致,则最好执行 CREATE STATISTICS 或 DROP STATISTICS 语句。CREATE STATISTICS 删除旧的统计信息并创建新的统计信息,而 DROP STATISTICS 只删除旧的统计信息。

执行 CREATE INDEX 语句时,将自动为索引创建统计信息。

执行 LOAD TABLE 语句时,将自动为表创建统计信息。

 另请参见

统计信息调控器如何维护统计信息