返回顶部
首页 > 资讯 > 数据库 >MySQL 支持Hash Join咯
  • 901
分享到

MySQL 支持Hash Join咯

MySQL支持HashJoin咯 2018-12-05 06:12:17 901人浏览 绘本
摘要

0.20 对非等值条件(执行Hash Join再进行过滤(Filter)),笛卡尔积都能使用Hash Join。 CREATE TABLE `t4` ( `c1` int DEFAULT NULL, `c2` int DEFAULT

MySQL 支持Hash Join咯

0.20 对非等值条件(执行Hash Join再进行过滤(Filter)),笛卡尔积都能使用Hash Join。

CREATE TABLE `t4` (
  `c1` int DEFAULT NULL,
  `c2` int DEFAULT NULL,
  `c3` int DEFAULT NULL,
  `c4` int DEFAULT NULL,
  KEY `c1` (`c1`,`c2`,`c3`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;


CREATE TABLE `t5` (
  `c1` int DEFAULT NULL,
  `c2` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;


delimiter ;;
create procedure load_t5()
    begin
    declare i int;
    set i=0;
    while(i<1000)
    do
       insert into t4(c1,c2,c3,c4) values(i,i,1000-i,i);
       insert into t5(c1,c2) values(i,i);
       set i=i+1;
    end while;
    end;;
delimiter ;
call load_t5();

# 执行Join 查询,对驱动表不能使用索引的查询,8.0开始支持使用Hash Join
root [t37](17:55 | DB102_8.0.20) >desc select t4.c4 from t4,t5 where t4.c3=t5.c1;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+--------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra                                      |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+--------------------------------------------+
|  1 | SIMPLE      | t4    | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    8 |   100.00 | NULL                                       |
|  1 | SIMPLE      | t5    | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 1000 |    10.00 | Using where; Using join buffer (hash join) |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+--------------------------------------------+
2 rows in set, 1 warning (0.01 sec)

root [t37](18:01 | DB102_8.0.20) >desc select t4.c4 from t4,t5 where t4.c3=t5.c1 and t4.c1 < 100;
+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+--------------------------------------------+
| id | select_type | table | partitions | type  | possible_keys | key  | key_len | ref  | rows | filtered | Extra                                      |
+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+--------------------------------------------+
|  1 | SIMPLE      | t4    | NULL       | range | c1            | c1   | 5       | NULL |    8 |   100.00 | Using index condition                      |
|  1 | SIMPLE      | t5    | NULL       | ALL   | NULL          | NULL | NULL    | NULL | 1000 |    10.00 | Using where; Using join buffer (hash join) |
+----+-------------+-------+------------+-------+---------------+------+---------+------+------+----------+--------------------------------------------+
2 rows in set, 1 warning (0.00 sec)

内存大小由参数join_buffer_size控制,超过容量将使用磁盘文件,适当调大join_buffer_sizeopen_files_limit参数,避免失败。从8.0.20开始,内存大小是按需分配的,不会一开始就分配参数配置的大小,避免浪费。

官档:

2.1.4 Hash Join Optimization

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 支持Hash Join咯

本文链接: https://lsjlt.com/news/6970.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL 支持Hash Join咯
    0.20 对非等值条件(执行Hash Join再进行过滤(Filter)),笛卡尔积都能使用Hash Join。 CREATE TABLE `t4` ( `c1` int DEFAULT NULL, `c2` int DEFAULT...
    99+
    2018-12-05
    MySQL 支持Hash Join咯
  • 如何解决MySQL8.0.18 Hash Join不支持left/right join左右连接问题
    这篇文章主要介绍如何解决MySQL8.0.18 Hash Join不支持left/right join左右连接问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在MySQL 8.0....
    99+
    2024-04-02
  • Mysql 8.0.18 hash join测试(推荐)
    Hash Join Hash Join 不需要任何索引来执行,并且在大多数情况下比当前的块嵌套循环算法更有效。 下面通过实例代码给大家介绍Mysql 8.0.18 hash join测试,具体内容如下所示:...
    99+
    2024-04-02
  • MySQL 8.0 hash join有重大缺陷?
    徐春阳老师发文爆MySQL 8.0 hash join有重大缺陷。 文章核心观点如下:多表(比如3个个表)join时,只会简单的把表数据量小的放在前面作为驱动表,大表放在最后面,从而导致可能产生极大结果集的笛卡尔积,甚至耗尽CPU和磁盘空...
    99+
    2017-11-25
    MySQL 8.0 hash join有重大缺陷?
  • 技术分享 | Hash join in MySQL 8
    作者:Erik Frøseth 翻译:管长龙 原文:https://mysqlserverteam.com/hash-join-in-mysql-8/ 长期以来,在 MySQL 中执行 join 查询的只是嵌套循环算法的变体。随着 My...
    99+
    2020-01-17
    技术分享 | Hash join in MySQL 8
  • MySQL优化器hash join怎么使用
    今天小编给大家分享一下MySQL优化器hash join怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2024-04-02
  • 如何解决SQLite不支持Right Join
    本篇内容主要讲解“如何解决SQLite不支持Right Join”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决SQLite不支持Right Join”吧...
    99+
    2024-04-02
  • MySQL 8.0 新特性之哈希连接(Hash Join)
    MySQL 开发组于 2019 年 10 月 14 日 正式发布了 MySQL 8.0.18 GA 版本,带来了一些新特性和增强功能。其中最引人注目的莫过于多表连接查询支持 hash join 方式了。我们...
    99+
    2024-04-02
  • 干涉MySQL优化器使用hash join的方法
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是mysql的国产分支版本,使用上与MySQL一致。 前言 数据库的优化器相当于人类的大脑,大部分时候都能做出正确的决策,制定正...
    99+
    2024-04-02
  • MySQL 8.0.18 稳定版发布! Hash Join如期而至
    MySQL 8.0.18 稳定版(GA)已于昨日正式发布,Hash Join 也如期而至。 快速浏览一下这个版本的亮点! 1.Hash Join Hash Join 不需要任何索引来执行,并且在大多数情况下...
    99+
    2024-04-02
  • 干涉MySQL优化器使用hash join的方法
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 前言 数据库的优化器相当于人类的大脑...
    99+
    2024-04-02
  • PHP支持MySQL吗
    这篇文章主要讲解了“PHP支持MySQL吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP支持MySQL吗”吧!PHP支持MySQL;MySQL是与PHP搭配使用最多的数据库,它们常被称...
    99+
    2023-07-02
  • MySQL中如何进行nest loop且不考虑hash join
    这期内容当中小编将会给大家带来有关MySQL中如何进行nest loop且不考虑hash join,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。只考虑nest loop,...
    99+
    2024-04-02
  • mysql支不支持unique索引
    这篇文章主要讲解了“mysql支不支持unique索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql支不支持unique索引”吧! ...
    99+
    2023-04-13
    mysql unique
  • mysql数据库支不支持like
    这篇文章主要介绍了mysql数据库支不支持like,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql支持like,like可以对任意多字符...
    99+
    2024-04-02
  • MySQL 8.0.19支持DNS SRV
    MySQL Router是InnoDB Cluster架构的访问入口,在架构部署上,官方给出的建议是router与应用端绑定部署,避免router单点问题。 之前还有客户咨询,能否router不与应用端绑定部署,不便于部署,在此之前都需要...
    99+
    2016-03-13
    MySQL 8.0.19支持DNS SRV
  • PHP是否支持MySQL
    PHP支持MySQL;MySQL是与PHP搭配使用最多的数据库,它们常被称为“黄金组合”。PHP中提供了完整的操作MySQL数据库的函数,这些函数包括了从连接数据库、执行SQL语句、处理数据结果集到关闭数据库的方方面面;通过这些函数,使基于...
    99+
    2022-06-14
    php mysql
  • mysql支持外键吗
    本篇内容主要讲解“mysql支持外键吗”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql支持外键吗”吧! mysql支持外键。...
    99+
    2024-04-02
  • mysql支持分区吗
    这篇文章主要介绍“mysql支持分区吗”,在日常操作中,相信很多人在mysql支持分区吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql支持分区吗”的疑惑有所帮助!接...
    99+
    2024-04-02
  • mysql怎么支持中文
    mysql怎么支持中文?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。mysql怎么支持中文1.正在MySQL安装目录下,找到my.ini文...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作