sqlserver 資料庫索引建立原則

2022-03-28 11:14:10 字數 1744 閱讀 7008

1、始終包含聚集索引

當表中不包含聚集索引時,表中的資料是無序的,這會降低資料檢索效率。即使通過索引縮小了資料檢索的範圍,但由於資料本身是無序的,當從表中提取實際資料時,會產生頻繁的定位問題,這也使得sql server基本上不會使用無聚集索引表中的索引來檢索資料。

2、保證聚集索引唯一

由於聚集索引是非聚集索引的行定位器,如果它不唯一,則會使行定位器中包含輔助資料,同時也導致從表中提取資料時,需要借助行定位器中的輔助資料來定位,這會降低處理效率。

3、保證聚集索引最小

每個聚集鍵值都是所有非聚集索引的葉結點記錄,它越小,意味著每個非聚集索引的索引葉包含的有效資料越多,這對於提公升索引效率很有好處。

4、覆蓋索引

覆蓋索引是指索引中的列包含了資料處理中涉及的所有列,覆蓋索引相當原始表的乙個子集,由於這個子集中包含了資料處理涉及的所有列,因此操作這個子集就可以滿足資料處理需要。一般而言,如果大多數處理都只涉及某個大表的某些列,可以考慮為這些列建立覆蓋索引。

覆蓋索引的建立方法是將要包含的列中的關鍵列做為索引鍵列,將其他列做為索引的包含列(使用索引建立語句中的include子句)。

5、適量的索引

當資料發生變化時,sql server會同步維護相關索引中的資料,過多的索引會加影響資料變更的處理效率。因此,只應該在經常使用的列上建立索引。

適量的索引還體現在對索引列的組合方式的控制上。例如,如果有兩個列col1和col2,這兩個列的組合會產生三種使用情況:單獨使用col1、單獨使用

col2及同時使用col1和col2。如果有為每種情況都建立索引,則需要建立三個索引。但也可以只建立乙個復合索引(col1, col2),這樣能

夠依次滿足col1+col2、col1、col2這三種方式的查詢,其中,col2利用這個查詢會比較勉強(還要配合單獨的統計),可以視實際情況確定

是否需要為col2建立單獨的索引。

特別注意:

不要建立重複索引,目前最常見的重複索引是單獨為某個列建立主鍵和聚集索引

與直接從表中提取資料相比,根據索引檢索資料,多了乙個索引檢索的過程,這個過程要求能夠盡量縮小資料檢索範圍,並且使用最少的時間,這樣才能真正保證能夠通過索引提高資料檢索效率。

實現上述目的,對於索引鍵列的選擇,應該遵循如下原則:

選擇性原則

選擇性是滿足條件的記錄佔總記錄數的百分比,這個比率應該盡可能低,這樣才能保證通過索引掃瞄後,只需要從基礎表提取很少的資料。

如果這個比率偏高,則不應該考慮在此列上建立索引。

資料密度原則

資料密度是指列值唯一的記錄佔總記錄數的百分比,這個比率越高,則說明此列越適合建立索引。

在考慮資料密度的時候,還要注意資料分布的問題,只有經常檢索的密度高時,才適合建立索引。例如,如果一張表有10萬記錄,雖然某個列不重複的記錄有9萬

條,但如果經常檢索的2萬條記錄,其不重複的列值才幾十條的話,這個列是不太適合建立索引的。另一種情況是,整體資料密度不大,但經常檢索的資料的密度

大,例如訂單的狀態,一般來說,訂單的狀態就幾種,但已經close的訂單往往佔整個資料的絕大部分,但資料處理的時候,基本上都是檢索未close的訂

單,這種情況下,為訂單的狀態列建立索引還是比較有效的(sql server 2008中,可以為這種列建立具有更佳效果的篩選索引)。

6、索引鍵列大小

一般不宜為超過100byte的列建立索引。

7、復合索引鍵列順序

在索引中,索引的順序主要由索引中的每乙個鍵列確定,因此,對於復合索引,索引中的列順序是很重要的,應該優先把資料密度大,選擇性列,儲存空間小的列放在索引鍵列的前面。

SQL Server資料庫 索引

描述 漢語字典中的漢字按頁存放,一般都有漢語拼音目錄 索引 偏旁部首目錄等 我們可以根據拼音或偏旁部首,快速查詢某個字詞 是sql server編排資料的內部方法。它為sql server提供一種方法來編排查詢資料 資料庫中儲存索引的資料頁 索引頁類似於漢語字 詞 典中按拼音或筆畫排序的目錄頁 通過...

資料庫基礎 索引(SQL Server)

參考原文 首先我們要知道資料庫索引是用來幹什麼的 索引是為了加快資料查詢速度而引入的,資料庫中儲存的資料在物理層是隨機儲存的,對某個列建立索引就會對該列的關鍵值進行排序並用某種資料結構儲存他的值和對應的實體地址,在sql中用的資料結構是b樹。索引的分類 1.聚集索引 聚集索引會對資料按索引按索引關鍵...

SQL server 資料庫之「索引」詳解

什麼是索引?資料庫中的索引與書籍中的目錄類似,索引使sql server編排資料的內部方法,它為sql server提供一種方法來編排查詢資料的路由。索引頁是資料中儲存索引的資料頁。索引頁存放檢索資料行的關鍵字頁及該資料行的位址指標。通過使用索引,可以大大提高資料庫的檢索速度 改善資料庫效能。索引的...