列统计信息永久地存储在数据库的系统表 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 语句时,将自动为表创建统计信息。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |