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

相关推荐
jnrjian2 小时前
FRA中 keep的backup set 不保险
sql·oracle
p***32356 小时前
一条sql 在MySQL中是如何执行的
数据库·sql·mysql
瀚高PG实验室8 小时前
Oracle或DM(达梦)时间戳之间的差值SQL迁移到瀚高数据库
数据库·sql·oracle·瀚高数据库
路边草随风8 小时前
starrocks compaction 进度问题定位
大数据·sql
曹牧8 小时前
Oracle:“列不能外部关联到子查询”
数据库·sql
w***i2949 小时前
【SQL】count(1)、count() 与 count(列名) 的区别
数据库·sql
where happens10 小时前
SQL Server 收缩日志
数据库·sql·oracle
梵得儿SHI10 小时前
AI Agent 性能优化与成本控制:从技术突破到行业落地实战指南
人工智能·性能优化·智能路由·aiagent落地实践·成本控制和稳定性保障·提示词压缩·模型运行慢
W***832010 小时前
SQL 中UPDATE 和 DELETE 语句的深入理解与应用
数据库·sql
凌~风10 小时前
001-计算机实验报告之数据库原理实验报告
数据库·sql