关于sql 查询性能优化的小经验
最近接到一些sql优化的任务。数据库类型:DB2
有一个长sql查询效率低,大概要几十秒,大概查询逻辑如下:
select * from tableA a where exists (select 1 from tableB b where a.id=b.id )
or exists (select 1 from tableC c where a.id=c.id );
tableA ,tableB ,tableC都是大表,数据量大,最终执行时间要几十秒,
但是把or 条件改成 union all 却可以大大提升执行效率,时间降到几秒:
select * from tableA a where exists (select 1 from tableB b where a.id=b.id )
union all
select * from tableA a where exists (select 1 from tableC c where a.id=c.id );
小结:union all 替换 or 条件, 有时候可以提高查询效率。