在指定的表或索引視圖中,對一個或多個統(tǒng)計組(集合)有關(guān)鍵值分發(fā)的信息進行更新。若要基于列生成統(tǒng)計,請參見 CREATE STATISTICS。
UPDATE STATISTICS table | view
[
index
| ( statistics_name [ ,...n ] )
]
[ WITH
[
[ FULLSCAN ]
| SAMPLE number { PERCENT | ROWS } ]
| RESAMPLE
]
[ [ , ] [ ALL | COLUMNS | INDEX ]
[ [ , ] NORECOMPUTE ]
]
table | view
要更新統(tǒng)計的表或索引視圖的名稱。表名和視圖名必須符合標(biāo)識符的規(guī)則。有關(guān)更多信息,請參見使用標(biāo)識符。由于索引名在每個數(shù)據(jù)庫中不唯一,所以必須指定 table 或 view??蛇x擇指定數(shù)據(jù)庫、表或視圖所有者。只有在 Microsoft® SQL Server™ 2000 企業(yè)版中才支持索引視圖。
index
要更新統(tǒng)計的索引。索引名必須符合標(biāo)識符的規(guī)則。如果未指定 index,則更新指定表或索引視圖中的所有索引的分發(fā)統(tǒng)計。若要查看索引名和描述的列表,請帶表名或視圖名執(zhí)行 sp_helpindex。
statistics_name
要更新的統(tǒng)計組(集合)的名稱。統(tǒng)計名稱必須符合標(biāo)識符規(guī)則。有關(guān)生成統(tǒng)計組的更多信息,請參見 CREATE STATISTICS。
n
是表示可以指定多個 statistic_name 組的占位符。
FULLSCAN
指定應(yīng)讀取 table 或 view 中的所有行以收集統(tǒng)計。FULLSCAN 提供與 SAMPLE 100 PERCENT 相同的行為。FULLSCAN 不能與 SAMPLE 選項一起使用。
SAMPLE number { PERCENT | ROWS }
當(dāng)為較大的表或視圖收集統(tǒng)計時,指定要采樣的表或索引視圖的百分比或行數(shù)。number 只允許使用整數(shù),無論它是 PERCENT 還是 ROWS。若要對較大的表或視圖使用默認采樣行為,請將 SAMPLE number 和 PERCENT 或 ROWS 一起使用。Microsoft SQL Server 將確保值的采樣數(shù)不低于某一數(shù)目,以保證統(tǒng)計有用。如果 PERCENT、ROWS 或 number 選項導(dǎo)致要采樣的行數(shù)過小,SQL Server 則自動根據(jù)表或視圖中的現(xiàn)有行數(shù)改正采樣。
說明 默認行為是在目標(biāo)表或索引視圖上進行采樣掃描。SQL Server 自動計算所需的樣本大小。
RESAMPLE
指定使用從所有現(xiàn)有統(tǒng)計(包括索引)繼承的采樣速率來收集統(tǒng)計。如果采樣速率導(dǎo)致要采樣的行過少,SQL Server 則自動根據(jù)表或視圖中的現(xiàn)有行數(shù)改正采樣。
ALL | COLUMNS | INDEX
指定 UPDATE STATISTICS 語句是否影響列統(tǒng)計、索引統(tǒng)計或所有現(xiàn)有統(tǒng)計。如果未指定選項,則 UPDATE STATISTICS 語句影響所有的統(tǒng)計。每個 UPDATE STATISTICS 語句只能指定一種類型(ALL、COLUMNS 或 INDEX)。
NORECOMPUTE
指定過期統(tǒng)計不自動重新計算。統(tǒng)計過期與否取決于在索引列上進行的 INSERT、UPDATE 和 DELETE 操作的數(shù)量。指定該選項時,將導(dǎo)致 SQL Server 禁用自動統(tǒng)計重建功能。若要還原自動統(tǒng)計重新計算,請重新執(zhí)行 UPDATE STATISTICS(不要 NORECOMPUTE 選項),或者執(zhí)行 sp_autostats。
重要 禁用自動統(tǒng)計重新計算會導(dǎo)致 SQL Server 查詢優(yōu)化器對于涉及指定表的查詢選擇非最佳的策略。
SQL Server 保留每個索引中關(guān)于鍵值分發(fā)的統(tǒng)計,并且使用這些統(tǒng)計來決定查詢處理中使用哪個(或哪些)索引。用戶可以通過使用 CREATE STATISTICS 語句生成基于非索引列的統(tǒng)計。查詢優(yōu)化依賴于分發(fā)步驟的準確性:
若要查看統(tǒng)計最近一次更新的時間,請使用 STATS_DATE 函數(shù)。
只有當(dāng)能夠在計算列上創(chuàng)建索引時,才可以在包含這些計算列的表上創(chuàng)建或更新統(tǒng)計。有關(guān)在計算列上創(chuàng)建索引的要求和限制的更多信息,請參見 CREATE INDEX。
UPDATE STATISTICS 權(quán)限默認授予表或視圖的所有者,并且該權(quán)限不可轉(zhuǎn)讓。
本示例更新表 authors 上的所有索引分發(fā)統(tǒng)計。
UPDATE STATISTICS authors
本示例僅更新表 authors 的索引 au_id_ind 的分發(fā)信息。
UPDATE STATISTICS authors au_id_ind
本示例首先創(chuàng)建表 authors 中 au_lname 列和 au_fname 列的統(tǒng)計組,然后對其進行更新。
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 統(tǒng)計組(集合),強制對表 authors 中的所有行進行完全掃描,并且關(guān)閉該統(tǒng)計組(集合)的自動統(tǒng)計更新。
UPDATE STATISTICS authors(anames)
WITH FULLSCAN, NORECOMPUTE
GO
相關(guān)文章