当前位置:Gxlcms > 数据库问题 > Oracle 查询性能优化实践

Oracle 查询性能优化实践

时间:2021-07-01 10:21:17 帮助过:2人阅读

?

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%‘)

技术分享

?

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

?

Oracle 查询性能优化实践

标签:

人气教程排行