在刚刚OOW19会上的《python and mysql 8.0 document store》topic中,终于看到了MySQL即将在8.0.18中支持hash join,自从被Oracle收购后,又一特性被引入到MySQL中,有了Hash Join,SQL的性能将得到显著的提升,同学们期盼已久,迫不及待的等待测试,BTW:Oracle数据库在1996年7.3版本中就已经推出了hash join功能。

Topic中给出了MySQL Hash Join的特性介绍:

1、对于大数据量的表关联,HJ速度将明显比NL快很多

2、在内存中处理

3、必要情况下,会使用磁盘空间

4、用于内连接,可扩展到外连接、半连接和反连接

5、替换查询计划中的Block Nested Loop

6、可以通过HINT强制SQL走HJ或者NL

MySQL是一个轻量级的数据库,使用起来非常简单,深受开发者喜爱。之所以一直不支持hash join,想必应该是背后的逻辑和数据支撑需要较高开发和维护成本,hash join算法其实并不复杂,但是要想hash join运行好,类似Oracle CBO一整套的东西是必不可少的,而CBO又依赖于统计信息,随之而来的就是Oracle中常见的谓词越界、数据分布不均、绑定变量窥探等等问题需要解决。

我们从后面看到,MySQL 8.0.18还支持EXPLAIN ANALYZE,也是基于CBO的一些新功能

使用它可以估算成本、查看实际执行的统计数据,包括第一条记录的返回时间,全部记录返回时间,返回记录的数量以及循环数量,EXPLAIN还将可以使用新的输出格式,树状输出。

随着企业数据量的增长,不再是几年前几十M大小随便跑的数据库了,期待MySQL在更多的场景都能发挥作用。

出处:墨天轮(https://www.modb.pro/db/6589,复制到网页中打开 )

Oracle放大招:MySQL 即将支持 Hash Join相关推荐

  1. MySQL 8.0 hash join有重大缺陷?

    我并不这么看. 友情提醒:本文建议在PC端阅读. 徐春阳老师发文爆MySQL 8.0 hash join有重大缺陷. 文章核心观点如下:多表(比如3个个表)join时,只会简单的把表数据量小的放在前面 ...

  2. Mysql 优化器内部JOIN算法hash join On-Disk Hash Join Grace Hash Join Hybrid hash join过程详解

    Mysql 各种hash join算法讲解 hash join的概述 提到hash join之前自然得说Nest loop join,以两个表的关联为例,它其实是个双层循环,先遍历外层的表(n条),再 ...

  3. MySQL 8.0 新特性:引人注目的哈希连接(Hash Join)

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:r6d.cn/uATq MySQL 开发组于 2019 年 10 月 ...

  4. MySQL 8.0 新特性之哈希连接(Hash Join)

    MySQL 开发组于 2019 年 10 月 14 日 正式发布了 MySQL 8.0.18 GA 版本,带来了一些新特性和增强功能.其中最引人注目的莫过于多表连接查询支持 hash join 方式了 ...

  5. oracle Hash Join及三种连接方式

    在Oracle中,确定连接操作类型是执行计划生成的重要方面.各种连接操作类型代表着不同的连接操作算法,不同的连接操作类型也适应于不同的数据量和数据分布情况. 无论是Nest Loop Join(嵌套循 ...

  6. mysql支不支持fulljoin_mysql不支持full join的另一种解决办法 和根据多个表中的相同分组来连接查询...

    先看两张表: 1. user表: 2. animal表: 现在我想要查询各省市区对应的人名和动物名,即根据省市区来连接两张表. 考虑到user表中有的省市区可能在animal表中没有,animal表中 ...

  7. 深入理解Oracle表(5):三大表连接方式详解之Hash Join的定义,原理,算法,成本,模式和位图

    Hash Join只能用于相等连接,且只能在CBO优化器模式下.相对于nested loop join,hash join更适合处理大型结果集        Hash Join的执行计划第1个是has ...

  8. MySQl 如何实现 FULL JOIN?

    MySQl 不支持FULL JOIN ,那我们如何在MySQl 实现FULL 功能呢? 通过UNION 来实现 FULL JOIN: SELECT * FROM a LEFT JOIN b ON a. ...

  9. Mysql 优化器内部JOIN算法hash join Nestloopjoin及classic hash join CHJ过程详解

    Mysql hash join之classic hash join CHJ过程详解 hash join的历史 优化器里的hash join算法在SQL Server.Oracle.postgress等 ...

最新文章

  1. quartz mysql 建表_quartz创建表语句
  2. mysql数据库时间字段看不懂_mysql数据库时间字段看不懂
  3. 把java复制到e_编写一个程序,将e:\java目录下的所有.java文件复制到e:\jad目录下...
  4. manjaro设置java_manjaro 深度学习编程环境搭建
  5. java 生产者消费者_Java多线程:线程间通信—生产者消费者模型
  6. memset与bzero初始化
  7. 什么是数据库?什么是数据库管理系统? 说明两者的区别和联系。
  8. wifi连接上不能上网 手机WiFi连接上不能上网的解决办法
  9. android模拟器装包,逍遥模拟器如何安装本地应用包apk?
  10. 全球及中国TNFα抑制剂行业竞争调查分析及项目可行性研究报告2021-2027年
  11. 【Javaweb】基础开发流程与介绍
  12. python做数据分析时缺失值填补、缺失值填充方法汇总
  13. JavaScript中Unicode编码和中文相互转换
  14. 北航2020级算法上机 C1-I 对抗 题解
  15. python的imaplib实现搜索邮件
  16. uos系统虚拟机_uos统一操作系统官方正式版下载
  17. 如何应对高并发问题?
  18. 如何降低OBS推流直播延迟的问题?
  19. ATRESplayer PREMIUM携手华为提升用户体验,突破浏览量历史记录
  20. 西蒙说游戏 计算机,编程课不用电脑?因为芬兰教师将编程当做一种思想来教...

热门文章

  1. 持续集成与持续部署实践_持续集成和部署的3个最佳实践
  2. es6 Class 的静态方法
  3. es6 Promise 的应用
  4. 视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机
  5. 理发店收银系统php,【毕业论文】基于php+mysql美发店收银系统设计与实现.doc
  6. linux下php模式,linux下安装php两种模式区别
  7. python的属性访问,python:如何访问函数的属性
  8. Pyhton基础篇(1)-第一个Pyhton程序(已更新)
  9. 【Win】使用L2TP出现809错误
  10. ELK学习总结(2-5)elk的版本控制