mysql join
2023-12-06 11:08 虎背熊腰 阅读(25) 评论(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。
】】】



浙公网安备 33010602011771号