在做性能優(yōu)化時,經(jīng)常需要創(chuàng)建索引,維護(hù)索引,或重建,或重組;在創(chuàng)建索引時,索引的數(shù)據(jù)頁有時需要填充滿,有時需要預(yù)留一定比例的空閑空間;在分析查詢的執(zhí)行計(jì)劃之后,推薦創(chuàng)建覆蓋索引(covering index),優(yōu)化查詢語句,使用執(zhí)行計(jì)劃通過Index Seek來獲取少量數(shù)據(jù)等,這些都是索引優(yōu)化不得不知的要點(diǎn)。

一,索引的重組(Reorganize)和重建(Rebuild)

在SQL Server中,索引(Index)是B-Tree(balance tree)結(jié)構(gòu),每個Page之間都有雙向指針鏈接在一起。Index是在table結(jié)構(gòu)之外,獨(dú)立存在的存儲結(jié)構(gòu)。Index能使查詢性能帶來飛躍的主要原因是:Index 結(jié)構(gòu)更小,能夠更快加載到內(nèi)存;Index ey物理順序和邏輯一致,數(shù)據(jù)的預(yù)讀取能夠提高數(shù)據(jù)的加載速度,SQL Server 每次讀取操作都會將物理物理相鄰的多個Page一起加載到內(nèi)存。

BTree結(jié)構(gòu)決定 Index 的葉子節(jié)點(diǎn),從左到右使依次增大,如圖是Index的葉子節(jié)點(diǎn),左邊的Index Key最小,右邊的Index Key最大:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

如果更新數(shù)據(jù)導(dǎo)致index key變化,例如,將index key 由4變更為9,那么必須將9放置在8之后,10之前,如果8所在的Page有空間容納9,那么SQL Server只需要將9移動到8之后,原來的4被刪除,這會降低原page中數(shù)據(jù)存儲的密度,造成一個碎片(fragment),即:3和5之間存在空閑空間,但是物理順序和邏輯順序還是一致的。

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式