Oracle查询效率优化--子查询


一个sql语句中如果有子查询,会较大的影响查询效率。

在子查询的表跟父查询的表有关系的情况,可以通过表关联的方式优化效率。

 

例如:

select
  a.id,
  a.name,
  (select b.name from table2 b where b.code = a.id) as comename
from table1 a

可以优化成:

select
  a.id,
  a.name,
  b.name as comename
from table1 a,table2 b
where b.code = a.id

 

经试验在数据量较大时,这种写法在性能上至少可以提升30-50%的效率,具体提升多少取决于业务逻辑复杂程度。

这种写法有一个弊端,第二种写法会把 table1 表中有值,但是table2 中comename为空的数据屏蔽掉,导致第一种

查询结果数量大于第二种,在使用时要注意业务要求。

 

查询数据量大的时候,首先要考虑的优化方案是:添加索引   

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM