SARG与查询优化(转载)
2009-09-18 13:42:37| 分类:
dbms
| 标签:
|举报
|字号大中小 订阅
在查询分析阶段,查询优化器查看查询的每个阶段并决定限制需要扫描的数据量是否有用。如果一个阶段可以被用作一个扫描参数(SARG),那么就称之为可优化的,并且可以利用索引快速获得所需数据。
SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接。形式如下:
列名 操作符 <常数 或 变量> 或 <常数 或 变量> 操作符 列名
如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是DBMS必须对每一行都判断它是否满足WHERE子句中的所有条件。所以一个索引对于不满足SARG形式的表达式来说是无用的。
1、Like语句是否属于SARG取决于所使用的通配符的类型
2、or 会引起全表扫描
3、非操作符、函数引起的不满足SARG形式的语句
4、IN 的作用相当与OR
5、尽量少用NOT
6、count(*)不比count(字段)慢
7、字段按需提取,避免“select *”
8、order by按聚集索引列排序效率最高
评论这张
转发至微博
转发至微博
评论