在指定的表或索引视图中,对一个或多个统计组(集合)有关键值分发的信息进行更新。若要基于列生成统计,请参见 CREATE STATISTICS。
UPDATE STATISTICS table | view
[
index
| ( statistics_name [ ,...n ] )
]
[ WITH
[
[ FULLSCAN ]
| SAMPLE number { PERCENT | ROWS } ]
| RESAMPLE
]
[ [ , ] [ ALL | COLUMNS | INDEX ]
[ [ , ] NORECOMPUTE ]
]
table | view
要更新统计的表或索引视图的名称。表名和视图名必须符合标识符的规则。有关更多信息,请参见使用标识符。由于索引名在每个数据库中不唯一,所以必须指定 table 或 view。可选择指定数据库、表或视图所有者。只有在 Microsoft® SQL Server™ 2000 企业版中才支持索引视图。
index
要更新统计的索引。索引名必须符合标识符的规则。如果未指定 index,则更新指定表或索引视图中的所有索引的分发统计。若要查看索引名和描述的列表,请带表名或视图名执行 sp_helpindex。
statistics_name
要更新的统计组(集合)的名称。统计名称必须符合标识符规则。有关生成统计组的更多信息,请参见 CREATE STATISTICS。
n
是表示可以指定多个 statistic_name 组的占位符。
FULLSCAN
指定应读取 table 或 view 中的所有行以收集统计。FULLSCAN 提供与 SAMPLE 100 PERCENT 相同的行为。FULLSCAN 不能与 SAMPLE 选项一起使用。
SAMPLE number { PERCENT | ROWS }
当为较大的表或视图收集统计时,指定要采样的表或索引视图的百分比或行数。number 只允许使用整数,无论它是 PERCENT 还是 ROWS。若要对较大的表或视图使用默认采样行为,请将 SAMPLE number 和 PERCENT 或 ROWS 一起使用。Microsoft SQL Server 将确保值的采样数不低于某一数目,以保证统计有用。如果 PERCENT、ROWS 或 number 选项导致要采样的行数过小,SQL Server 则自动根据表或视图中的现有行数改正采样。
说明 默认行为是在目标表或索引视图上进行采样扫描。SQL Server 自动计算所需的样本大小。
RESAMPLE
指定使用从所有现有统计(包括索引)继承的采样速率来收集统计。如果采样速率导致要采样的行过少,SQL Server 则自动根据表或视图中的现有行数改正采样。
ALL | COLUMNS | INDEX
指定 UPDATE STATISTICS 语句是否影响列统计、索引统计或所有现有统计。如果未指定选项,则 UPDATE STATISTICS 语句影响所有的统计。每个 UPDATE STATISTICS 语句只能指定一种类型(ALL、COLUMNS 或 INDEX)。
NORECOMPUTE
指定过期统计不自动重新计算。统计过期与否取决于在索引列上进行的 INSERT、UPDATE 和 DELETE 操作的数量。指定该选项时,将导致 SQL Server 禁用自动统计重建功能。若要还原自动统计重新计算,请重新执行 UPDATE STATISTICS(不要 NORECOMPUTE 选项),或者执行 sp_autostats。
重要 禁用自动统计重新计算会导致 SQL Server 查询优化器对于涉及指定表的查询选择非最佳的策略。
SQL Server 保留每个索引中关于键值分发的统计,并且使用这些统计来决定查询处理中使用哪个(或哪些)索引。用户可以通过使用 CREATE STATISTICS 语句生成基于非索引列的统计。查询优化依赖于分发步骤的准确性:
若要查看统计最近一次更新的时间,请使用 STATS_DATE 函数。
只有当能够在计算列上创建索引时,才可以在包含这些计算列的表上创建或更新统计。有关在计算列上创建索引的要求和限制的更多信息,请参见 CREATE INDEX。
UPDATE STATISTICS 权限默认授予表或视图的所有者,并且该权限不可转让。
本示例更新表 authors 上的所有索引分发统计。
UPDATE STATISTICS authors
本示例仅更新表 authors 的索引 au_id_ind 的分发信息。
UPDATE STATISTICS authors au_id_ind
本示例首先创建表 authors 中 au_lname 列和 au_fname 列的统计组,然后对其进行更新。
CREATE STATISTICS anames
ON authors (au_lname, au_fname)
WITH SAMPLE 50 PERCENT
GO
-- Time passes. The UPDATE STATISTICS statement is then executed.
UPDATE STATISTICS authors(anames)
WITH SAMPLE 50 PERCENT
GO
本示例更新表 authors 中的 anames 统计组(集合),强制对表 authors 中的所有行进行完全扫描,并且关闭该统计组(集合)的自动统计更新。
UPDATE STATISTICS authors(anames)
WITH FULLSCAN, NORECOMPUTE
GO
相关文章