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

北京北大青鳥學(xué)校學(xué)術(shù)部提供:

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

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

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

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

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

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

fillfactor 是創(chuàng)建索引時(shí)每個(gè)索引頁(yè)上要用于存儲(chǔ)數(shù)據(jù)的空間百分比。fillfactor替換起始填充因子以作為索引或任何其它重建的非聚集索引(因?yàn)橐阎亟ň奂饕?的新默認(rèn)值。如果 fillfactor 為 0,DBCC DBREINDEX 在創(chuàng)建索引時(shí)將使用指定的起始fillfactor。
我們?cè)诓樵兎治銎髦休斎肴缦碌拿睿?
DBCC DBREINDEX (‘MyTable,’’,80)
這樣就會(huì)索引重建了。 (北京北大青鳥學(xué)校)想要了解北大青鳥好嗎?北大青鳥怎么樣?北大青鳥課程?北大青鳥學(xué)費(fèi)多少等問(wèn)題,歡迎您與通州北大青鳥網(wǎng)站在線老師聯(lián)系

北大青鳥網(wǎng)上報(bào)名
北大青鳥招生簡(jiǎn)章