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