sql性能调优的注意项

sql性能调优的注意项

1. SELECT子句中避免使用 ‘ * ‘
使用’*’ ,Oracle便会查询数据字典,依次解析各列名,应明确指定各列的名称,这样也便于理解
2. 用>=替代>
3.用EXISTS替代IN
用IN将启用全表扫描,使用EXISTS将利用索引,提高查询效率。
4.用NOT EXISTS替代NOT IN
用NOT IN将启用全表扫描,使用NOT EXISTS将利用索引,提高查询效率。
5.避免在索引列上使用IS NULL和IS NOT NULL
6.用UNION-ALL 替换UNION
7.通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描.
注意, 以上规则只针对多个索引列有效. 如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低.
8.用WHERE子句替换HAVING子句
避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销
9.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。
提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉
10.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or Name =‘admin’
可以这样查询:
select id from t where num = 10 union all s

posted @ 2019-08-22 15:43  smileLS66  阅读(46)  评论(0编辑  收藏  举报