mysql中left join 不一定比 in效率高案例

一 案例

1.1 说明

常规来说,left join语法 要比 写 in 效率高,查询快,但是万事有特殊情况,如下sql:

DESC

SELECT a.business_depart,b.user_id,c.name FROM bocai_ip_list AS a ,bocai_department_admin AS b, bocai_ip_list AS c WHERE

b.department_abbr=a.business_depart AND a.id='1057279' AND c.id=b.user_id

DESC

SELECT id,NAME FROM bocai_ip_list WHERE id IN (

SELECT b.user_id FROM bocai_ip_list AS a ,bocai_department_admin AS b WHERE

b.department_abbr=a.business_depart AND a.id='1057279'

)

using where;using index 为何第一个执行是这个,而第二个是using where;using index;LooseScan第二个比第一个高效呢?

1.2 分析说明

第二条用 IN 子查询触发了**MySQL 的 LooseScan 索引跳跃优化,这条 SQL 因为结果集小 + 索引完美,IN 触发了 LooseScan(索引跳跃扫描),**反而比多表 JOIN 更快。比第一条三表 JOIN 的全量匹配更快,所以更高效。

相关推荐
韩楚风4 小时前
【参天引擎】事务生命周期 / MVCC / Undo / ACID / 分布式事务 功能域整体解析
数据库·分布式·mysql·架构·cantian
renhongxia15 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
程序员无隅5 小时前
Coding Agent 为什么压缩上下文后还能继续工作?上下文模块设计拆解
java·开发语言·数据库
愿做无知一猿5 小时前
Nacos连接MySQL异常?DataGrip竟成救星
数据库·mysql
G.O.G.O.G5 小时前
LeetCode SQL 从入门到精通(MySQL)06(上)
数据库·sql·mysql·leetcode
千桐科技5 小时前
qData 数据中台开源版从 MySQL 到 Doris完成一次数据同步
大数据·mysql·开源·doris·数据中台·qdata
研究员子楚6 小时前
GEO行业发展标准体系白皮书V2.0-第10卷 · 全球篇:跨国标准协同与全球品牌语义治理框架
数据库·人工智能·microsoft·架构·geo
Omics Pro7 小时前
深度学习多组学互作:组内+组间
数据库·人工智能·深度学习·mysql·搜索引擎·自然语言处理
残*影8 小时前
如何优雅地保存MySQL数据变更历史?
数据库·mysql
乐观的Terry8 小时前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程