当前第2页 返回上一页
1 2 3 4 5 6 7 8 | | -> Inner hash join (city.province_id = country.id) (cost=23.27 rows=2)
-> Filter: (city.id < 50) (cost=5.32 rows=5)
-> Index range scan on city using PRIMARY (cost=5.32 rows=49)
-> Hash
-> Inner hash join (province.province_id = country.id) (cost=4.00 rows=3)
-> Table scan on province (cost=0.59 rows=34)
-> Hash
-> Table scan on country (cost=0.35 rows=1)
|
哈希连接也同样适用于 「笛卡尔积」,即没有指定查询条件,如下:
1 2 3 4 5 6 | EXPLAIN FORMAT= TREE
SELECT
*
FROM
city
JOIN province;
|
输出为:
1 2 3 4 | | -> Inner hash join (cost=1333.82 rows=13294)
-> Table scan on city (cost=1.17 rows=391)
-> Hash
-> Table scan on province (cost=3.65 rows=34)
|
MySQL 什么情况下不会使用哈希连接?
1.目前 MySQL 哈希连接只支持内连接,反连接、半连接和外连接仍然使用块嵌套循环执行。
2.如果索引可用,MySQL 会更倾向于使用索引查找来支持嵌套循环;
3.当不存在等值查询时,会使用嵌套循环。
如下:
1 2 3 4 5 6 7 | EXPLAIN FORMAT=TREE
SELECT
*
FROM
city
JOIN province
ON city.province_id < province.province_id;
|
输出为:
1 | | <not executable by iterator executor>
|
如何查看语句执行是否使用哈希连接?
EXPLAIN FORMAT= TREE 在 MySQL 8.0.16 及之后的版本可以使用,TREE 提供了类似于树的输出,对查询处理的描述比传统格式更加精确,它是唯一显示 哈希连接 用法的格式。
除此之外,也可以使用 EXPLAIN ANALYZE 查看 哈希连接 信息。
<hr/> 以上基于 MySQL community Server 8.0.18。
以上就是数据库哈希连接详解(MySQL新特性)的详细内容,更多文章请关注木庄网络博客!!
返回前面的内容
相关阅读 >>
mysql中各种常见join连表查询实例总结
mysql如何查询所有表和字段信息
mysql和workbench该如何去安装?
mysql查询时间数据
mysql修改密码的三种方式介绍(代码示例)
mysql外键约束怎么写
如何理解spring事务及声明式事务的使用
认识mysql insert into ... select的锁问题
mysql和oracle哪个好
navicate连接mysql数据库报错了怎么办
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 数据库哈希连接详解(MySQL新特性)