重建指定數(shù)據(jù)庫中表的一個或多個索引。
DBCC DBREINDEX
( [ 'database.owner.table_name'
[ , index_name
[ , fillfactor ]
]
]
) [ WITH NO_INFOMSGS ]
'database.owner.table_name'
是要重建其指定的索引的表名。數(shù)據(jù)庫、所有者和表名必須符合標(biāo)識符的規(guī)則。有關(guān)更多信息,請參見使用標(biāo)識符。如果提供 database 或 owner 部分,則必須使用單引號 (') 將整個 database.owner.table_name 括起來。如果只指定 table_name,則不需要單引號。
index_name
是要重建的索引名。索引名必須符合標(biāo)識符的規(guī)則。如果未指定 index_name 或指定為 ' ',就要對表的所有索引進行重建。
fillfactor
是創(chuàng)建索引時每個索引頁上要用于存儲數(shù)據(jù)的空間百分比。fillfactor 替換起始填充因子以作為索引或任何其它重建的非聚集索引(因為已重建聚集索引)的新默認值。如果 fillfactor 為 0,DBCC DBREINDEX 在創(chuàng)建索引時將使用指定的起始 fillfactor。
WITH NO_INFOMSGS
禁止顯示所有信息性消息(具有從 0 到 10 的嚴重級別)。
DBCC DBREINDEX 重建表的索引或為表定義的所有索引。通過允許動態(tài)重建索引,可以重建強制 PRIMARY KEY 或 UNIQUE 約束的索引,而不必除去并重新創(chuàng)建這些約束。這意味著不必知道表的結(jié)構(gòu)或約束就可以重建索引,將數(shù)據(jù)大容量復(fù)制到表中后就會出現(xiàn)這種情況。
如果指定 index_name 或 fillfactor,還必須指定以前所有的參數(shù)。
DBCC DBREINDEX 可以使用一條語句重建表的所有索引,這比對多個 DROP INDEX 和 CREATE INDEX 語句進行編碼容易。由于該工作是通過一條語句完成的,所以 DBCC DBREINDEX 自動為原子性,而單個 DROP INDEX 和 CREATE INDEX 語句要成為原子性則必須放在事務(wù)中。另外,與使用單個 DROP INDEX 和 CREATE INDEX 語句相比,DBCC DBREINDEX 可從 DBCC DBREINDEX 的優(yōu)化性能中更多地獲益。
不支持在系統(tǒng)表上使用 DBCC DBREINDEX。
不管是否指定任何選項( NO_INFOMSGS 除外),DBCC DBREINDEX 返回以下結(jié)果集;下例使用 pubs 數(shù)據(jù)庫的 authors 表(值可能會有變化):
Index (ID = 1) is being rebuilt.
Index (ID = 2) is being rebuilt.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
如果指定 NO_INFOMSGS 選項,DBCC DBREINDEX 將返回以下結(jié)果集(消息):
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
DBCC DBREINDEX 權(quán)限默認授予表所有者、sysadmin 固定服務(wù)器角色或 db_owner 和 db_ddladmin 固定數(shù)據(jù)庫角色的成員且不可轉(zhuǎn)讓。
下例使用填充因子 80 重建 pubs 數(shù)據(jù)庫中 authors 表上的 au_nmind 聚集索引。
DBCC DBREINDEX ('pubs.dbo.authors', UPKCL_auidind, 80)
下例使用填充因子值 70 重建 authors 表上的所有索引。
DBCC DBREINDEX (authors, '', 70)相關(guān)文章