SQL Server索引設(shè)計(jì)指南( Index Design Guidelines)
文章主要描述的是SQL Server索引設(shè)計(jì)指南( Index Design Guidelines),SQL Server數(shù)據(jù)庫的索引對用戶與T-SQL開發(fā)者來說幾乎可以說是透明的。除非用戶使用表提示(table hints)來強(qiáng)制優(yōu)化器使用某個(gè)具體的索引,否則查詢中的索引不能被具體指定。
通常情況下,基于索引鍵直方圖的值,SQL Server的基于代價(jià)的優(yōu)化器從I/O角度會(huì)選擇代價(jià)最小的索引。
Chapter35會(huì)詳細(xì)講述優(yōu)化器如何評估I/O,并決定采用最有效的查詢計(jì)劃。本節(jié)主要講述一些創(chuàng)建有用索引的主要的指導(dǎo)原則,使得優(yōu)化器能夠有效地使用這些索引。
設(shè)計(jì)索引的一些通用的指南包括以下幾點(diǎn):
對于組合索引,盡量保持索引的越靠左邊的列越具有高的選擇性。索引中的***列應(yīng)該***有唯一性(如果可能),并且索引列的順序總體上應(yīng)該具有從高到低的唯一性。然而,記住如果索引的***列沒有在SARG或join子句中出現(xiàn),那么選擇性將不會(huì)有任何幫助。為了確保索引能夠被大多數(shù)查詢使用,***列應(yīng)該是查詢中最常用的列。
確保join中使用的列具有索引。如果join中的列上沒有索引,Join的處理將是低效的。記住:一個(gè)PRIMARY KEY約束將自動(dòng)會(huì)在一個(gè)列上創(chuàng)建索引,但是FOREIGN KEY約束不會(huì)的。如果你的查詢通常在表的primary Key 和foreign key之間進(jìn)行join操作,那么你將會(huì)在foreign key上創(chuàng)建索引。
為你的最關(guān)鍵查詢和事務(wù)來調(diào)整索引。你不能為每個(gè)可能的查詢都創(chuàng)建索引。然而,如果你能識(shí)別你的關(guān)鍵和最常用的查詢,并為它們創(chuàng)建索引,那么你的應(yīng)用將運(yùn)行地更好。SQL Profile是一個(gè)識(shí)別你的最常用查詢的有用工具。SQL Profie也能識(shí)別那些運(yùn)行慢的查詢。
避免列上的索引具有低選擇性。優(yōu)化器將不可能使用這些索引,它們只是占有些空間并且在插入、刪除、修改時(shí)增加了以一些不必的負(fù)擔(dān)而已。當(dāng)索引能覆蓋一個(gè)查詢則是一個(gè)例外。索引覆蓋將在后面詳細(xì)介紹。
小心選擇你的聚集和非聚集索引。接下來的兩個(gè)小節(jié)將討論給出一些選擇聚集和非聚集索引的技巧和指南。這些都基于對列上包含的數(shù)據(jù)和該列上所執(zhí)行的查詢類型來給出的。
以上的相關(guān)內(nèi)容就是對SQL Server索引設(shè)計(jì)指南( Index Design Guidelines的介紹,望你能有所收獲。
上述的相關(guān)內(nèi)容就是對SQL Server索引設(shè)計(jì)指南( Index Design Guidelines)的描述,希望會(huì)給你帶來一些幫助在此方面。
【編輯推薦】
- SQL Server 2000全文檢索的使用方案描述
- SQL Server數(shù)據(jù)庫與identity列
- SQL Server更多內(nèi)存的提供步驟描述
- SQL Server 實(shí)用操作的代碼演示
- SQL Server 2005固定服務(wù)器角色的操作全過程