Where条件的顺序1、如果是多表连接,表连接的条件放在普通条件前 2、如果使用到了索引,先使用该条件 3、根据条件中筛选得到的记录百分比,越小的越靠前 4、数据量大的时候尽量不使用in 例如: where a.id=b.id --表连接条件 and a.serv_id='123456' --该字段用到索引 and b.state='B' --筛选出记录为总记录的25% and a.month='200505' --筛选出记录为总记录的60%
先检讨一下,上面的回答错了,我也是刚学优化没多久。更正如下Where条件的顺序1、如果是多表连接,表连接的条件放在普通条件前 2、如果使用到了索引,该条件靠后 3、根据条件中筛选得到的记录百分比,越小的越靠后 4、数据量大的时候尽量不使用in 例如: where a.id=b.id --表连接条件 and a.month='200505' --筛选出记录为总记录的60% and b.state='B' --筛选出记录为总记录的25% and a.serv_id='123456' --该字段用到索引
ORACLE会对SQL查询进行优化
2、如果使用到了索引,先使用该条件
3、根据条件中筛选得到的记录百分比,越小的越靠前
4、数据量大的时候尽量不使用in
例如:
where a.id=b.id --表连接条件
and a.serv_id='123456' --该字段用到索引
and b.state='B' --筛选出记录为总记录的25%
and a.month='200505' --筛选出记录为总记录的60%
2、如果使用到了索引,该条件靠后
3、根据条件中筛选得到的记录百分比,越小的越靠后
4、数据量大的时候尽量不使用in
例如:
where a.id=b.id --表连接条件
and a.month='200505' --筛选出记录为总记录的60%
and b.state='B' --筛选出记录为总记录的25%
and a.serv_id='123456' --该字段用到索引
oracle优化时,从左向右,先大范围,再小范围,
其它数据库,从左向右,先小范围,再大范围。
具体依据,建议看看 sql performance tuning一书,网上有下载的,讲的非常好。各种数据库中的sql优化都有提及。