当前第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能处理json吗
mysql 的10大经典优化案例场景实战
mysql数据库优化之索引实现原理与用法分析
mysql实现添加用户并授权
mysql如何添加注释
mysql如何创建视图?创建语句是什么?
关闭mysql数据库后怎么重新打开
php中修改表需要注意什么?常见几个修改表是?
mysql 8.0.22 安装配置图文教程
mysql中all的用法是什么
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 数据库哈希连接详解(MySQL新特性)