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

相关推荐
麦聪聊数据6 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
黑白极客10 小时前
怎么给字符串字段加索引?日志系统 一条更新语句是怎么执行的
java·数据库·sql·mysql·引擎
爬山算法11 小时前
Hibernate(31)Hibernate的原生SQL查询是什么?
数据库·sql·hibernate
l1t12 小时前
NineData第三届数据库编程大赛:用一条 SQL 解数独问题我的参赛程序
数据库·人工智能·sql·算法·postgresql·oracle·数独
施嘉伟13 小时前
一次生产环境 SQL 不走索引的排查过程
数据库·sql
Web项目开发14 小时前
Mysql创建索引的SQL脚本,复制粘贴即可使用
数据库·sql·mysql
Waloo14 小时前
SQL Server 2017 EXISTS 关键字 完整用法详解(最全 + 最优写法 + 性能对比)
sql·sql server
周末吃鱼15 小时前
mysql8.0支持CURRENT_DATE如何写
数据库·sql·mysql
cn_mengbei16 小时前
从零到一:基于Qt on HarmonyOS的鸿蒙PC原生应用开发实战与性能优化指南
qt·性能优化·harmonyos
DemonAvenger16 小时前
Redis慢查询分析与优化:性能瓶颈排查实战指南
数据库·redis·性能优化