数据库哈希连接详解(MySQL新特性)


当前第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》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...