當SQLServer的數據積累到一定的數量,查詢效率往往急劇下降,常常讓人無法忍受,這時我們會想到各種方法對系統進行優化。DBCC是一組功能強大的控制檯命令,其中DBCC DBREINDEX經常用到,它可以幫助我們重建指定表的索引,以提高查詢的速度。
該命令的用法比較簡單,比如:
dbcc dbreindex ([customer],'',90)
第一個參數是要重建索引的表名,第二個參數指定索引名稱,空着就表示所有,第三個參數叫填充因子,是指索引頁的數據填充程度,0表示使用先前的值,100表示每個索引頁都填滿,這時查詢效率最高,但插入索引時會移動其它索引,可根據實際情況來設置。
這個命令只能操作單個表,如果想對某數據庫中的所有表都重建索引,則需要寫個程序:
USE MyDB;
DECLARE @name varchar(100)
DECLARE authors_cursor CURSOR FOR
Select [name] from sysobjects where xtype='u' order by id
OPEN authors_cursor
FETCH NEXT FROM authors_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
DBCC DBREINDEX (@name, '', 90)
FETCH NEXT FROM authors_cursor
INTO @name
END
deallocate authors_cursor