SQL SERVER 索引(2)——設計原則
阿新 • • 發佈:2018-11-15
索引有助於我們提高系統的效能,提升查詢效率,但是如果索引設計的不夠合理,可能會適得其反,讓我們的系統更加緩慢,查詢效率下降,所以本次介紹一下索引的設計原則。
資料表的選擇:
什麼樣的表適合建立索引呢,注意如果表很小資料不多,那麼索引慎用,因為查詢優化器在遍歷用於搜尋資料的索引時,花費的時間可能比執行簡單的表掃描還長。 因此,小表的索引可能從來不用,但仍必須在表中的資料更改時進行維護。
操作對於索引的影響:
索引會影響 INSERT、UPDATE、DELETE 和 MERGE 語句的效能,因為當表中的資料更改時,所有索引都須進行適當的調整,所以在新建索引時應該儘量避免會做大量資料更新操作的列,而要選擇時常需要查詢的列來作為索引列,或者是兩個表的關聯欄位和查詢條件欄位等作為索引列。
欄位長度的選擇:
索引列要選擇較短的列,不能將 ntext、text、image、varchar(max)、nvarchar(max) 和 varbinary(max) 資料型別的列指定為索引鍵列。
聚集索引和非聚集索引的適用場景:
動作描述 |
使用聚集索引 |
使用非聚集索引 |
列經常被分組排序 |
應 |
應 |
返回某範圍內的資料 |
應 |
不應 |
一個或極少不同值 |
不應 |
不應 |
小數目的不同值 |
應 |
不應 |
大數目的不同值 |
不應 |
應 |
頻繁更新的列 |
不應 |
應 |
外來鍵列 |
應 |
應 |
主鍵列 |
應 |
應 |
頻繁修改索引列 |
不應 |
應 |
以上是索引設計的一些知識點,歡迎指正。