MySQL8.0.18 试用Hash Join
MySQL8.0.18在上个月已经正式发布了,令人兴奋的是带来了Hash Join,今天体验一下Hash Join是否能带来性能上的提升。
我的测试比较简单,下载一个8.0.18版本的mysql到CentOS7上面,解压安装后直接导入样本数据库world_x。选择使用里面的city表来测试一下。首先看一下表定义:
接下来看一下表里面有多少数据:
稍微少了点,试试看。
接下来创建一个和city一摸一样的表city_clone
然后向里面插入数据:
知道为什么没有直接使用 create table city_clone as select * from city;吗?因为开启GTID不允许使用CREATE TABLE ... SELECT
语句。
好了,准备就绪,接下来准备执行:
select count(*) from city join city_clone on city.name=city_clone.name;
注意:目前hash join只能用于非索引列的 inner join 查询,因此选择使用name字段。
首先看一下执行计划:
看到了吗,使用format=tree可以看到是否使用hash join。实际执行一下:
结果出来的很快,数据太少了,有可能对比不出效果啊......,接下来看一下不使用hash join的效果,通过优化器提示,强制优化器不使用hash join
1.02秒,对比还是挺明显的。在没加索引的字段上进行 inner join 查询hash join 优势明显。
接下来给name字段加上索引,看看优化器会怎么执行
优化器在加上索引后依旧执行NLJ,执行的结果如下:
简单的体验到此结束,感兴趣的朋友可以在自己的真实场景下,体验一下巨大的差异,希望hash join能够解决一部分场景下的性能问题。
感谢关注MySQL!
- 顺序存储线性表的实现
- 技术揭秘:什么是定位劫持?黑客是如何进行劫持攻击的?
- CSS概要
- 如何使用 scikit-learn 为机器学习准备文本数据
- 使用jQuery Validation插件来验证表单
- 如何用Wireshark捕获USB数据?
- QEMU 2: 参数解析
- [WCF安全系列]认证与凭证:X.509证书
- 深度学习:能击败欧洲围棋冠军,还能防恶意软件
- Metasploit中的JAVA反向TCP做法的研究
- 商业级别Fortify白盒神器介绍与使用分析
- [WCF安全系列]消息的保护等级[上篇]
- QEMU 1: 使用QEMU创建虚拟机
- [WCF安全系列]绑定、安全模式与客户端凭证类型:NetNamedPipeBinding、NetTcpBinding与NetMsmqBinding
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 微信小程序开发实战(25):预览图像
- 【Pytorch】笔记三:数据读取机制与图像预处理模块
- 表白利器,马赛克拼贴照片制作
- 【014期】JavaSE面试题(十四):基本IO流
- 微信小程序开发实战(24):选择图像
- 反 996 有理:催程序员交代码,写不出好软件
- 一千个不用 Null 的理由!
- WebAssembly 是 Deno 的好搭档
- Chrome开发者工具的11个高级使用技巧
- 怒爬某破Hub站资源,简单4步撸个鉴黄平台!
- 审阅“史上”最烂的代码
- BeanUtils 是用 Spring 的还是 Apache 的好?
- 一看就会的mysql索引优化(真实案例)
- 【015期】JavaSE面试题(十五):网络IO流
- 算法篇:二分查找基础篇