数据库哈希连接详解(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事务中四种隔离级别

mysql怎么查询表中所有列(字段)?

怎么把文本导入mysql

本地mysql服务无法启动怎么办

mysql添加外键错误是什么原因

mysql如何实现负数转正数

mysql server如何关闭

mysql中常见的几种约束有哪些

mysql怎么批量录入数据

mysql如何把日期转换为字符串类型

更多相关阅读请进入《mysql》频道 >>


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

数据库系统概念 第6版

机械工业出版社

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



打赏

取消

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

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

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

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

评论

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