【MySQL】之join算法详解
Simple Nested-Loop Join
Simple Nested-Loop Join算法是指读取驱动表t1中的每行数据,将每行数据传递到被驱动表t2上,取出被驱动表t2中满足条件的行,和t1组成结果集。
在这个算法中,需要对t1进行全表扫描,假设t1表1000行数据,那么需要对t2表进行1000次全表扫描,假设t2表也是1000行数据,那么就需要扫描1000 X 1000=1000000行。
示例图如下:当t1表5行数据,t2表5行数据时,需要扫描25行数据。
Index Nested-Loop Join
index nested-loop join算法的优化思路是通过驱动表的匹配条件,直接与被驱动表的索引进行匹配,减少了被驱动表的扫描次数。
该算法同样要对驱动表t1进行全表扫描,但是我们在拿着t1表的数据去被驱动表t2进行匹配时可以利用t2表的索引,如果t1表中1000行数据,t2表中1000行数据,那么一共就需要扫描1000+1000=2000行数据。这个过程就跟我们写程序时的嵌套查询类似,并且可以用上被驱动表的索引,所以称之为“Index Nested-Loop Join”,简称 NLJ。
示例如下:当t1表有5行数据,t2表有5行数据时,一共需要扫描5+5=10行数据。
Block Nested-Loop Join
Batched Key Access
set optimizer_switch='mrr=on,mrr_cost_based=off,batched_key_access=on';
小结
-
尽量避免使用join。 -
用小表作为驱动表,减少外层循环的次数。 -
多表关联查询时,要保证被关联的字段要有索引。 -
适当增大join_buffer_size的值,缓存的数据越多,就越能减少被驱动表扫描的次数。 -
减少不必要的字段查询。 -
需要join的字段,数据类型保持绝对一致。
本文分享自微信公众号 - MySQL数据库技术栈(Mysqltechnology)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Dubbo 3.0 - 开启下一代云原生微服务
作者 | 郭浩(项升) 阿里巴巴经济体 RPC 框架负责人 **导读:**本文整理自作者于 2020 年云原生微服务大会上的分享《Dubbo3.0 - 开启下一代云原生微服务》,主要介绍了关于思考 rpc 框架层面,功能演进的方向是什么?以及怎么更好地支持云上的多语言开发的新思考。 关注阿里巴巴云原生公众号,后台回复【818】即可获取直播回看地址和大会 PPT 合集。 看到这个题目,大家可能会有几个问题,比如,什么是云原生微服务?Dubbo3.0 是什么?和目前的 Dubbo2.0 有什么区别?用了 Dubbo3.0 会带来哪些业务视角的好处?后面的分享会对这些问题逐一解答。 这次分享分为以下几个环节: Dubbo 的演进历史 Dubbo 的开源现状 定义 Dubbo3.0 分享 Dubbo 3.0 目前取得的一些成果 考虑到有些同学对 Dubbo 可能不太熟悉,在介绍背景之前,我先简单介绍一下 Dubbo 是什么。简单地说,Dubbo 是基于 Java 的 RPC 框架。一个 RPC 框架至少由数据格式、传输协议和连接管理组成,这三点也是构成核心。Dubbo 能够被广泛应用主要有两个...
- 下一篇
面向移动与边缘设备的人工智能系统
⬆⬆⬆ 点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 徐梦炜,北京大学信息科学技术学院2015级博士生,师从黄罡教授与刘譞哲副教授,将于2020年加入北京邮电大学担任特聘副研究员,博士生导师。主要研究方向为移动与边缘计算,已在相关领域的国际顶级会议如MobiCom,MobiSys,UbiComp,WWW等发表多篇论文。 一、What:如何理解移动与边缘设备上AI system? AI system是沟通上层算法应用以及底层硬件的桥梁,由于新的算法、模型、AI应用的出现,底层就会有新的硬件产出,比如AI chip、GPU,这需要有更好的系统去沟通上层与底层,支撑上层的应用,并优化应用的性能。讲者在WWW2019上发表的文章中指出,越来越多的深度学习应用运行在手机等终端设备上,这说明,随着5G以及边缘技术的发展,终端设备上的计算性能越来越强,越来越多的计算任务,比如ML和DL的推断甚至训练,更倾向于在终端设备上完成。 二、WHY:为什么在Camera 上做视频分析? 研究动机在于,把更多的计算从集中式的云服务器上off load到摄像头本身。现代化社会在城市、...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度