mysql join
2023-12-06 11:08 虎背熊腰 阅读(11) 评论(0) 编辑 收藏 举报select * from a,b 等同于inner join
join 有2种执行方式
Nested Loop Join(嵌套循环连接):这是最简单和最基础的连接算法。它会遍历一个表中的每一条记录,并与另一个表进行比较,以查找匹配的记录。这种方法适用于较小的表或者没有索引的情况。
其中Nested Loop Join 有包括三种子算法【
Simple Nested Loop Join(SNLJ)
Index Nested Loop Join(INLJ)[Index Join(索引连接)]
Block Nested Loop Join(BNLJ)
】
hash join
【【【
要查看MySQL查询是否使用了Index Join,可以通过查询执行计划中的Extra字段来判断。具体步骤如下:
执行查询,并在查询前加上EXPLAIN关键字,生成查询执行计划。例如:
vbnet
Copy
EXPLAIN SELECT * FROM table1 JOIN table2 ON table1.id = table2.id;
查看查询执行计划中的Extra字段,如果Extra字段为"Using index",则表示使用了Index Join。
例如,如果查询执行计划如下所示:
sql
Copy
+----+-------------+--------+------------+-------+---------------+---------+---------+---------------------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+--------+------------+-------+---------------+---------+---------+---------------------+------+----------+-------------+
| 1 | SIMPLE | table1 | NULL | index | PRIMARY | PRIMARY | 4 | NULL | 5 | 100.00 | Using index |
| 1 | SIMPLE | table2 | NULL | index | PRIMARY | PRIMARY | 4 | test.table1.id | 1 | 100.00 | Using index |
+----+-------------+--------+------------+-------+---------------+---------+---------+---------------------+------+----------+-------------+
可以看到第二行的Extra字段为"Using index",表示使用了Index Join。
注意,使用Index Join时,MySQL会使用其中一个表的索引来定位匹配的行,然后再使用另一个表的索引来检索匹配的行。因此,在查询执行计划中,可能会出现多个表都使用了索引的情况,需要根据具体情况判断是否使用了Index Join。
】】】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架