Oracle 查询性能优化实践

 

1.索引使用原则

 

不要对索引使用全模糊,但是 LIKE 'asdf%'是可以的,即不要Contains,可用StartWith

不要对索引进行函数,表达式操作,或者使用is null判断,否则将会使用全表扫描

不等于也会造成全表扫描,使用column < 'a' or column > 'a' 来替代

如果一个列有索引,另一个无索引,那么 c1 or c2 ,则将会造成全表扫描;

组合索引查询,如果包含前导索引,则会生效,否则,将会全表扫描;

 

2.顺序

 

where语句:尽量把大范围的过滤放在后面;

表连接:将大范围数据过滤的表放在后面;

 

3.执行计划

 

学会在sqldeveloper中查看执行计划

总的原则:避免全表扫描,善用索引。

Eg:

一般的查询

 

加上索引优化:

10天以内的数据,均使用索引。其中ORDER_ID是oi表的一个索引列

 

AND (oi.ORDER_ID LIKE '150913%' OR oi.ORDER_ID LIKE '150914%' OR oi.ORDER_ID LIKE '150915%' OR oi.ORDER_ID LIKE '150916%' OR oi.ORDER_ID LIKE '150917%' OR oi.ORDER_ID LIKE '150918%' OR oi.ORDER_ID LIKE '150919%' OR oi.ORDER_ID LIKE '150920%' OR oi.ORDER_ID LIKE '150921%' OR oi.ORDER_ID LIKE '150922%' OR oi.ORDER_ID LIKE '150923%')

 

速度提高了几倍,当然这个要从设计上去空间,避免大表扫描。

 

posted @ 2015-09-23 17:38  _DN  阅读(287)  评论(0编辑  收藏  举报