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 的全量匹配更快,所以更高效。

相关推荐
SelectDB6 小时前
快手基于 Apache Doris 千亿多模态检索的实践
大数据·数据库·数据分析
SelectDB6 小时前
StarRocks 迁移至 Apache Doris 完整指南:三步完成结构、数据与业务平滑切换
大数据·数据库·数据分析
这个DBA有点耶6 小时前
InnoDB索引组织表下,复合主键和自增主键的物理存储差异与选型对比
数据库·mysql·架构
李少兄6 小时前
数据库批量清理前置防御:如何严谨校验目标表是否存在
mysql
香吧香6 小时前
Docker Swarm 线上环境 MariaDB XA 悬停事务故障排查
mysql·异常
其实防守也摸鱼7 小时前
常见安全架构中 Shiro 的认证确认机制解析
运维·服务器·数据库·windows·github
小白男神7 小时前
MySQL进阶学习三(视图)
后端·mysql
TDengine (老段)7 小时前
TDengine 常见问题 TOP7
大数据·数据库·时序数据库·常见问题·tdengine·涛思数据
+VX:Fegn08957 小时前
计算机毕业设计|基于java+ vue共享单车信息系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
mysqloffice8 小时前
数智时代,核心系统数据库架构往哪走
数据库·人工智能