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为空的数据屏蔽掉,导致第一种

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

 

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

 

posted @ 2021-05-13 17:18  墨水不是水  阅读(1751)  评论(0编辑  收藏  举报