1.盡量不要對列名進行函數處理。而是針對後面的值進行處理
例如where col1 = -5的效率比where -col1=5的效率要高
因為後面的條件對列值進行了計算。這樣的條件下優化器無法使用索引
而是要針對所有值進行計算之後才能再比較
2.盡量使用和數劇列一樣的值進行操作
如果col1是數值型
那麼例如where col1 = 2和where col1= ‘2′
則前者效率更高
因為比較字符和數值型的時候
引擎需要把兩者都轉化成雙精度然後進行比較
3.減少函數的使用
例如where col1 >= ‘2009-10-26′ and col1 <= ‘2009-10-27′
和where datediff(day,col1,getdate())=0
後者因為用到函數處理。所以col1上的索引又無法使用了
4.盡量不要用OR
一般對於OR的條件
優化器一般會使用全表掃描