寫sql語句的時候很多時候會用到filter篩選掉一些記錄,sql對篩選條件簡稱:sarg(search argument/sarg)
1 where 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()等
正確建立 使用索引
集合可以預知是比較小的,不必要建立索引,因為全表掃瞄的非常快,不必要維護索引 可預知每次查詢的結果集合佔比比較大時 30 以上,佔比越大索引速度越慢 就沒有必要建立索引,因為使用索引需要進行2次查詢 查詢條目和根據索引指標去查詢相應的文件 正確選擇的文件字段建立索引,應該選擇字段值基數大的建立索引 ...
正確的使用索引
1.查詢的條件字段不是索引字段,對哪乙個字段建立了索引,就用這個欄位做條件 2.建立索引的時候應該對區分度比較大的列進行建立 1 10以下的重複率比較適合建立索引 3.範圍 範圍越大越慢 範圍越小越快 like a 速度慢 like a 速度快 4.條件列參與計算 使用函式 速度慢 5.and 和 ...
SQLSERVER索引的使用技巧
之前做過一次試驗,當所建立的索引沒有在where條件中應用時,查詢結果需要40多分鐘 而建對索引時,不到30秒,很神奇吧,這就是索引的作用,他就像目錄一樣,可以輕鬆的找到你想要的資料,就像字典,如果沒有目錄,可想其查詢的難度。在總結索引設計的原則時,我們有必要來闡述sqlserver中索引的四種型別...