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