一个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为空的数据屏蔽掉,导致第一种
查询结果数量大于第二种,在使用时要注意业务要求。
查询数据量大的时候,首先要考虑的优化方案是:添加索引