寫sql語句的時候很多時候會用到filter篩選掉一些記錄,sql對篩選條件簡稱:sarg(search argument/sarg)
1where amount>
4000
and amount<
6000
上面這句就是篩選條件
當然這裡不是說sqlserver的where子句,是說sqlserver對索引的利用
在sqlserver對於沒有sarg運算子的表示式,索引是沒有用的,sqlserver對它們很難使用比較優化的做法。
意思是說,如果你的sql語句中沒有where子句包括非sarg運算子,那麼你的sql語句是不會用到**中的索引的
下面說一下哪些是非sarg運算子:
非sarg運算子包括
not、
<>、
not exists、
not in、
not like
規律就是有「not」 關鍵字 或者 不等於的意思 基本上利用不了索引
還有一些內部函式,如果使用這些內部函式sqlserver也不會用到索引
內部函式,例如:convert(),upper()等
SQLSERVER對索引的利用
寫sql語句的時候很多時候會用到filter篩選掉一些記錄,sql對篩選條件簡稱 sarg search argument sarg 1 where amount 4000 and amount 6000 上面這句就是篩選條件 當然這裡不是說sqlserver的where子句,是說sqlserver...
利用索引提高SQL Server資料處理的效率
在良好的資料庫設計基礎上,能有效地使用索引是sql server取得高效能的基礎,sql server採用基於代價的優化模型,它對每乙個提交的有關表的查詢,決定是否使用索引或用哪乙個索引。因為查詢執行的大部分開銷是磁碟i o,使用索引提高效能的乙個主要目標是避免全表掃瞄,因為全表掃瞄需要從磁碟上讀表...
SQL server 索引的設計
盡量避免表掃瞄 檢查你的查詢語句的where子句,因為這是優化器重要關注的地方。包含在where裡面的每一列 column 都是可能的侯選索引,為能達到最優的效能,考慮在下面給出的例子 對於在where子句中給出了column1這個列。下面的兩個條件可以提高索引的優化查詢效能!第一 在表中的colu...