UPDATE STATISTICS 语句更新系统目录表中优化器使用的统计信息以确定成本最低的查询计划。
为了确保优化器选择的查询计划最能反映表的当前状态,在不能自动生成统计信息时应定期运行 UPDATE STATISTICS。
下表总结了当没有自动生成统计信息时,何时运行不同的 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 例程 |
有关数据库服务器在系统目录表中保留的特定统计信息的信息,请参阅为表和索引保留的统计信息。