关于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 条件, 有时候可以提高查询效率。

相关推荐
cfm_29141 小时前
Redis高并发缓存架构设计与性能优化实战
redis·缓存·性能优化
画江湖Test2 小时前
Redis 块的原理
数据库·redis·缓存·性能优化
数据库小学妹2 小时前
关系型数据库核心原理拆解:SQL解析、事务引擎、存储结构全链路分析
数据库·经验分享·sql·数据库架构·dba
逍遥运德2 小时前
PostgreSQL ---【序列】用法详解
后端·sql·postgresql
侑虎科技2 小时前
Unity预计算辐照度全局光照PRTGI实践与拓展(上)
性能优化
数据库小学妹4 小时前
InnoDB内存架构解密:Buffer Pool与性能优化实战
数据库·经验分享·sql·性能优化·架构
Lyyaoo.4 小时前
【MySQL】SQL优化
android·sql·mysql
ImTryCatchException4 小时前
Android 性能优化实战手册:从理论到落地的完整方法论
android·性能优化
zhiSiBuYu05175 小时前
用 OpenCLAW 重写 CUDA 内核:原理、实践与性能优化
性能优化
xcLeigh6 小时前
KES数据库运维监控与故障排查实战
运维·数据库·sql·故障排查·运维监控·kes