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

相关推荐
zqmattack25 分钟前
SQL sever根据身份证判断性别函数
java·数据库·sql
知识分享小能手2 小时前
Oracle 19c入门学习教程,从入门到精通,SQL语言基础详解:语法、使用方法与综合案例(5)
sql·学习·oracle
C++chaofan3 小时前
JUC并发编程:LockSupport.park() 与 unpark() 深度解析
java·开发语言·c++·性能优化·高并发·juc
冬奇Lab13 小时前
稳定性性能系列之十六——车机特定场景:黑卡死问题分析与排查实战
android·性能优化
香气袭人知骤暖15 小时前
SQL慢查询常见优化步骤
android·数据库·sql
Star Learning Python15 小时前
MySQL日期时间的处理函数
数据库·sql
醇氧19 小时前
SqlLogInterceptor mybatis配置打印SQL
java·sql·mybatis
清风拂山岗 明月照大江20 小时前
MySQL进阶
数据库·sql·mysql
知识分享小能手20 小时前
Oracle 19c入门学习教程,从入门到精通,SQL*Plus命令详解:语法、使用方法与综合案例 -知识点详解(4)
sql·学习·oracle