?
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%‘)
?
速度提高了几倍,当然这个要从设计上去空间,避免大表扫描。
?
时间: 2024-10-12 00:09:31