北大青鳥教學:SQL Server中使用索引需要注意的問題(下)

北京北大青鳥學校學術部提供:

接上篇:SQL Server中使用索引需要注意的問題(上)
4)索引對查詢有一這的優(yōu)化,但由于改變一個表的內容,將會引起索引的變化。頻繁的對數(shù)據(jù)操作如insert,update,delete語句將導致系統(tǒng)花費較大的代價進行索引更新,引起整體性能的下降。一般來講,在對查詢性能的要求高于對數(shù)據(jù)維護性能要求時,應該盡量使用索引,有時在這種操作數(shù)據(jù)庫比較頻繁的某些極端情況下,可先刪除索引,再對數(shù)據(jù)庫表更新大量數(shù)據(jù),最后再重建索引,新建立的索引總是比較好用。

索引在使用了長久的時候,就會產生很多的碎片,查詢的性能就會受到影響,這時候有兩種方法解決,一是利用DBCC INDEXDEFRAG整理索引碎片,還有就是利用DBCC DBREINDEX重建索引。(北京北大青鳥學校)

DBCC INDEXDEFRAG 命令是聯(lián)機操作,所以索引只有在該命令正在運行時才可用。而且可以在不丟失已完成工作的情況下中斷該操作。這種方法的缺點是在重新組織數(shù)據(jù)方面沒有聚集索引的除去/重新創(chuàng)建操作有效。

重新創(chuàng)建聚集索引將對數(shù)據(jù)進行重新組織,其結果是使數(shù)據(jù)頁填滿。填滿程度可以使用 FILLFACTOR 選項進行配置。這種方法的缺點是索引在除去/重新創(chuàng)建周期內為脫機狀態(tài),并且操作屬原子級。如果中斷索引創(chuàng)建,則不會重新創(chuàng)建該索引。 (北京北大青鳥學校)

北京北大青鳥學校介紹:索引重建使用的方法:
語法 DBCC DBREINDEX ( [ ‘TableName’ [ , index_name [ , fillfactor ] ] ] )
參數(shù) ‘TableName’
是要重建其指定的索引的表名。數(shù)據(jù)庫、所有者和表名必須符合標識符的規(guī)則。有關更多信息,請參見使用標識符。如果提供 database 或 owner 部分,則必須使用單引號 (‘)將整個 database.owner.table_name 括起來。如果只指定 table_name,則不需要單引號。

index_name 是要重建的索引名。索引名必須符合標識符的規(guī)則。如果未指定 index_name 或指定為 ‘ ‘,就要對表的所有索引進行重建。 (北京北大青鳥學校)

fillfactor 是創(chuàng)建索引時每個索引頁上要用于存儲數(shù)據(jù)的空間百分比。fillfactor替換起始填充因子以作為索引或任何其它重建的非聚集索引(因為已重建聚集索引)的新默認值。如果 fillfactor 為 0,DBCC DBREINDEX 在創(chuàng)建索引時將使用指定的起始fillfactor。
我們在查詢分析器中輸入如下的命令:
DBCC DBREINDEX (‘MyTable,’’,80)
這樣就會索引重建了。 (北京北大青鳥學校)想要了解北大青鳥好嗎?北大青鳥怎么樣?北大青鳥課程?北大青鳥學費多少等問題,歡迎您與通州北大青鳥網(wǎng)站在線老師聯(lián)系

北大青鳥網(wǎng)上報名
北大青鳥招生簡章