sp_updatestats (Transact-SQL)

对当前数据库中所有用户定义表和内部表运行 UPDATE STATISTICS。

有关 UPDATE STATISTICS 的详细信息,请参阅 UPDATE STATISTICS (Transact-SQL)。 有关统计信息的详细信息,请参阅统计信息

主题链接图标 Transact-SQL 语法约定

语法

sp_updatestats [ [ @resample = ] 'resample']

返回代码值

0(成功)或 1(失败)

参数

  • [ @resample =] 'resample'
    指定 sp_updatestats 使用 UPDATE STATISTICS 语句的 RESAMPLE 选项。 如果未指定 'resample',则 sp_updatestats 将使用默认的抽样来更新统计信息。 resample 为 varchar(8),默认值为 NO。

注释

通过指定 ALL 关键字,sp_updatestats 可以对数据库中的所有用户定义表和内部表执行 UPDATE STATISTICS。 sp_updatestats 将显示指示其进度的消息。 完成更新之后,此存储过程将报告已为所有的表更新了统计信息。

sp_updatestats 更新已禁用非聚集索引的统计信息,但不更新已禁用聚集索引的统计信息。

sp_updatestats 将基于 sys.sysindexes 目录视图中的 rowmodctr 信息,只更新那些需要更新的统计信息,从而避免对未更改行的统计信息进行不必要的更新。

sp_updatestats 可以触发对存储过程或其他已编译代码的重新编译。 但是,如果只可能有一个查询计划用于引用的表及表上的索引,则 sp_updatestats 可能不会触发重新编译。 在这些情况下,即便更新了统计信息也不必进行重新编译。

对于兼容性级别低于 90 的数据库,执行 sp_updatestats 并不为特定的统计信息保留最新的 NORECOMPUTE 设置。 对于兼容性级别为 90 或更高的数据库,sp_updatestats 并不为特定的统计信息保留最新的 NORECOMPUTE 选项。 有关禁用和重新启用统计信息更新的详细信息,请参阅统计信息

权限

要求具有 sysadmin 固定服务器角色的成员身份或数据库 (dbo) 的所有者身份。

示例

以下示例更新 AdventureWorks2012 数据库中各表的统计信息。

USE AdventureWorks2012;
GO
EXEC sp_updatestats; 

请参阅

参考

ALTER DATABASE SET 选项 (Transact-SQL)

CREATE STATISTICS (Transact-SQL)

DBCC SHOW_STATISTICS (Transact-SQL)

DROP STATISTICS (Transact-SQL)

sp_autostats (Transact-SQL)

sp_createstats (Transact-SQL)

UPDATE STATISTICS (Transact-SQL)

系统存储过程