在上一篇內容中,北大青鳥北京學校老師介紹了索引的兩種類型:聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclustered index,也稱非聚類索引、非簇集索引)。這篇文章,我們將介紹一下在使用中需要注意的問題。
我們在選擇創建聚集索引的時候要注意以下幾個方面:
1) 對表建立主鍵時,就會為主鍵自動添加了聚集索引,如自動編號字段,而我們沒有必要把聚集索引浪費在主鍵上,除非你只按主鍵查詢,所以會把聚集索引設置在按條件查詢頻率最高的那個字段或者組合的字段。
2) 索引的建立要根據實際應用的需求來進行,并非是在任何字段上建立索引就能提高查詢速度。聚集索引建立遵循下面幾個原則:
包含大量非重復值的列。
使用下列運算符返回一個范圍值的查詢:BETWEEN、>、>=、< 和 <=。
被連續訪問的列。
返回大型結果集的查詢。 (北大青鳥北京學校)
經常被使用聯接或 GROUP BY 子句的查詢訪問的列;一般來說,這些是外鍵列。對ORDER BY 或 GROUP BY 子句中指定的列進行索引,可以使 SQL Server 不必對數據進行排序,因為這些行已經排序。這樣可以提高查詢性能。
OLTP 類型的應用程序,這些程序要求進行非常快速的單行查找(一般通過主鍵)。應在主鍵上創建聚集索引。
3) 在聚集索引中按常用的組合字段建立索引,形成復合索引,一般在為表建立多個主鍵的時候就會產生,如果一個表中的數據在查詢時有多個字段總是同時出現則這些字段就可以作為復合索引,這樣能形成索引覆蓋,提高where語句的查詢效率。 (北大青鳥北京學校)