【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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
10分钟搞定 Java 并发队列好吗?好的
| 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough 现陆续将Demo代码和技术文章整理在一起 Github实践精选 ,方便大家阅读查看,本文同样收录在此,觉得不错,还请Star🌟 前言 如果按照用途与特性进行粗略的划分,JUC 包中包含的工具大体可以分为 6 类: 执行者与线程池 并发队列 同步工具 并发集合 锁 原子变量 在【并发系列】中,主要讲解了 执行者与线程池,同步工具,锁 , 在分析源码时,或多或少的提及到了「队列」,队列在 JUC 中也是多种多样存在,所以本文就以「远看」视角,帮助大家快速了解与区分这些看似「杂乱」的队列 并发队列 Java 并发队列按照实现方式来进行划分可以分为 2 种: 阻塞队列 非阻塞队列 如果你已经看完并发系列锁的实现,你已经能够知道他们实现的区别: 前者就是基于锁实现的,后者则是基于 CAS 非阻塞算法实现的 常见的队列有下面这几种: 瞬间懵逼?看到这个没有人性的图想直接走人...
-
下一篇
面向移动与边缘设备的人工智能系统
⬆⬆⬆ 点击蓝字 关注我们 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条评论来说两句吧...

微信收款码
支付宝收款码