V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Gravitysrainbow  ›  全部回复第 1 页 / 共 1 页
回复总数  3
117 天前
回复了 Vesc 创建的主题 数据库 求 SQL 优化建议
要确保 select A.id
from A 以及 select 1 from B where 这两个单独的子 sql 都能命中索引,命中 后获取到 A 的 ID ,在 inner join 一次手动回表去重,可以避免在 sql 里 distinct 或者 group by 的开销
117 天前
回复了 Vesc 创建的主题 数据库 求 SQL 优化建议
where exists ( select 1 from B where a.order_id = b.order_id )这是个相关子查询,执行慢是因为 B 的查询依赖于 A 的结果,这个时候会先执行 A ,如果 A 的结果剩下 20w ,B 的子查询就要执行 20W 次,可以参考这个文档: https://blog.csdn.net/weixin_43997319/article/details/123713513 ;最简单的优化方案就是使用 join: select
A.*
from A
inner join (
select A.id
from A
left join ( select 1 from B where ) BX ON a.order_id = b.order_id
<where>
<if test="name != null and namelength()>0">

</where>
) AX on AX.id = A.id
where 1=1
117 天前
回复了 Vesc 创建的主题 数据库 求 SQL 优化建议
where exists ( select 1 from B where a.order_id = b.order_id )
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1305 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 17:40 · PVG 01:40 · LAX 09:40 · JFK 12:40
Developed with CodeLauncher
♥ Do have faith in what you're doing.