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

相关推荐
舒一笑3 小时前
信息的建筑学:MyBatis Log Panda 如何重构开发者的认知地图
后端·sql·intellij idea
core5125 小时前
不借助框架实现Text2SQL
sql·mysql·ai·大模型·qwen·text2sql
张人玉7 小时前
SQLite 快速入门 Cheat Sheet
数据库·sql·sqlite
DarkAthena8 小时前
【DuckDB】活用marco以兼容GaussDB的SQL执行
数据库·sql·duckdb
x***01068 小时前
SQL 注入漏洞原理以及修复方法
网络·数据库·sql
Wang's Blog9 小时前
MySQL: 查询全流程深度解析与性能优化实践指南
数据库·mysql·性能优化
q***318910 小时前
mysql 迁移达梦数据库出现的 sql 语法问题 以及迁移方案
数据库·sql·mysql
却尘11 小时前
别再瞎用 Context 了,该上 Zustand 的时候就别犹豫
前端·性能优化·架构
Gauss松鼠会11 小时前
【openGauss】OPENGAUSS/POSTGRESQL 中float类型到int类型的隐式转换
数据库·sql·database·opengauss