7、Between在某些时候比IN速度更快,Between能够更快地根据索引找到范围。用查询优化器可见到差别。
select
*
from chineseresume where title in ('男','女')
Select
*
from chineseresume where
between
'男'
and
'女'是一样的。由于in会在比较多次,所以有时会慢些。
9、 WHERE后面的条件顺序影响
WHERE子句后面的条件顺序对大数据量表的查询会产生直接的影响,如
Select
*
from zl_yhjbqk where dy_dj =
'1KV以下'
and xh_bz=1
Select
*
from zl_yhjbqk where xh_bz=1
and dy_dj =
'1KV以下'
以上两个SQL中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,
如果dy_dj =
'1KV以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,
在进行第一条SQL的时候99%条记录都进行dy_dj及xh_bz的比较,
而在进行第二条SQL的时候0.5%条记录都进行dy_dj及xh_bz的比较,以此可以得出第二条SQL的CPU占用率明显比第一条低。
所以尽量将范围小的条件放在前面。。