sql server 海量数据速度提升:SQL优化-索引(7) 【转】
介紹完SARG后,我們來總結一下使用SARG以及在實踐中遇到的和某些資料上結論不同的經驗:
1、Like語句是否屬于SARG取決于所使用的通配符的類型
如:name like ‘張%’ ,這就屬于SARG
而:name like ‘%張’ ,就不屬于SARG。
原因是通配符%在字符串的開通使得索引無法使用。
2、or 會引起全表掃描
如:Name=’張三’ and 價格>5000 符號SARG,
而:Name=’張三’ or 價格>5000 則不符合SARG。
使用or會引起全表掃描。
3、非操作符、函數引起的不滿足SARG形式的語句
不滿足SARG形式的語句最典型的情況就是包括非操作符的語句,如:NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE等,另外還有函數。下面就是幾個不滿足SARG形式的例子:
ABS(價格)<5000
Name like ‘%三’
有些表達式,如:
WHERE 價格*2>5000
SQL SERVER也會認為是SARG,SQL SERVER會將此式轉化為:
WHERE 價格>2500/2
但我們不推薦這樣使用,因為有時SQL SERVER不能保證這種轉化與原始表達式是完全等價的。
4、IN 的作用相當與OR
語句:
Select * from table1 where tid in (2,3)
和
Select * from table1 where tid=2 or tid=3
是一樣的,都會引起全表掃描,如果tid上有索引,其索引也會失效。
文章出處:http://blog.csdn.net/cuizm/article/details/4498974
轉載于:https://www.cnblogs.com/zrj531/archive/2012/02/22/2362735.html
總結
以上是生活随笔為你收集整理的sql server 海量数据速度提升:SQL优化-索引(7) 【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解JavaScript系列(27)
- 下一篇: linux cmake编译源码,linu