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