代码改变世界

mysql join

  虎背熊腰  阅读(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。

】】】

 

 

 

 

 

 

 

 

 

 

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示