未自动生成统计信息时更新统计信息

UPDATE STATISTICS 语句更新系统目录表中优化器使用的统计信息以确定成本最低的查询计划。

要点: 自动生成统计信息时,您不需运行 UPDATE STATISTICS 操作。
以下统计信息由 CREATE INDEX 语句(带有或不带 ONLINE 关键字)自动生成:

为了确保优化器选择的查询计划最能反映表的当前状态,在不能自动生成统计信息时应定期运行 UPDATE STATISTICS。

技巧: 如果在使用 ON-Bar 之前对 sysutils 数据库运行 UPDATE STATISTICS LOW,那么 ON-BAR 处理需要的时间将减少。

下表总结了当没有自动生成统计信息时,何时运行不同的 UPDATE STATISTICS 语句。如果需要运行 UPDATE STATISTICS 语句并且有很多表,那么可以编写一个脚本生成这些 UPDATE STATISTICS语句。

何时执行 UPDATE STATISTICS 语句 详细信息 和示例的参考
行数已发生显著变化 UPDATE STATISTICS LOW

DROP DISTRIBUTIONS

更新行数的统计信息升级时按需要删除数据分发
对于任何索引的除第一列以外的所有列 UPDATE STATISTICS LOW 创建数据分发
查询包含非索引连接列或过滤器列 UPDATE STATISTICS MEDIUM

DISTRIBUTIONS ONLY

创建数据分发
查询包含索引连接列或过滤器列 UPDATE STATISTICS HIGH 表(索引中的前导列) 创建数据分发
查询包含多列索引,该索引定义于 连接列或过滤器列 UPDATE STATISTICS HIGH 表(多列索引中第一个不同的列) 创建数据分发
查询包含多列索引,该索引定义于 连接列或过滤器列 UPDATE STATISTICS LOW 表(多列索引中的所有列) 创建数据分发
查询包含许多小表(符合一个扩展数据块) 小表上的 UPDATE STATISTICS HIGH 创建数据分发
查询使用 SPL 例程 过程的 UPDATE STATISTICS 重新优化 SPL 例程

有关数据库服务器在系统目录表中保留的特定统计信息的信息,请参阅为表和索引保留的统计信息