当前第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事务中四种隔离级别
mysql怎么查询表中所有列(字段)?
怎么把文本导入mysql
本地mysql服务无法启动怎么办
mysql添加外键错误是什么原因
mysql如何实现负数转正数
mysql server如何关闭
mysql中常见的几种约束有哪些
mysql怎么批量录入数据
mysql如何把日期转换为字符串类型
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 数据库哈希连接详解(MySQL新特性)