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

相关推荐
2601_962680224 小时前
数据分析面试常考的SQL题和业务题分别是哪几类?
sql·面试·数据分析
鬓戈5 小时前
Qwen3.8-27B + vLLM 性能优化
人工智能·性能优化·vllm
yunwei375 小时前
eBPF 示例教程:实现 `scx_nest` 调度器
linux·后端·性能优化
子非鱼a5 小时前
【SQL注入】 ShadowCart
sql
HwJack206 小时前
【HarmonyOS开发小实践】ArkUI 应用级状态AppStorage 与跨页面共享、持久化
ui·华为·性能优化·harmonyos
程序员阿鹏7 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
FlashGeek7 小时前
全 AI 实战: 一次语音房 Flutter内核 native 内存泄露的定位与修复
性能优化
liangsheng_g7 小时前
Spring事务传播行为分派与挂起恢复源码实战
数据库·sql·spring
杨云龙UP8 小时前
MySQL Host is blocked because of many connection errors 导致 JDBC 连接失败排查与解决
linux·运维·网络·数据库·sql·mysql·登录失败
旺仔不是程序员11 小时前
复合索引最左前缀原则:PostgreSQL 的 WHERE 为什么必须命中第一列
数据库·后端·sql