覆蓋索引通常都是復合索引,即索引字段為多個。創建索引時應該注意索引排列順序。
Sql Server檢索應用索引時,字段識別順序為 從左到右。
例如如下索引的使用上
Create NONCLUSTERED Index IX_Student_Name_Class_Sex
On tb_Student(Name,Class,Sex)
Select * From tb_Student as s where s.Name='ws' //可以使用
Select * From tb_Student as s where s.Name='ws' and s.Class=1 //可以使用
Select * From tb_Student as s where s.Name='ws' and s.Class=1 and s.Sex=1 //可以使用
Select * From tb_Student as s where s.Class=1 and s.Sex=1 //不能使用所創建的索引
所以說在我們創建和使用索引的時候,要注意字段的排序順序。
創建索引時,盡量使用不更新的字段,以避免更新時帶來的非聚集索引維護成本。在編寫更新語句時,盡量避免更新索引字段,
應當判斷是否需要更新字段,做法就是加一個判斷,這樣避免相同的數據,還做更新,造成沒必要的數據覆蓋帶來的索引維護成本。
如果說索引字段一定要頻繁更新的話,那麼可采用讀寫分離。索引照常在查詢庫中建立,而更新在寫庫中操作,避免了插入數據維護索引造成太多的等待和死鎖。