最近在优化链表查询的时候发现就算链接的表里面不到1w的数据链接查询也需要10多秒,这个速度简直不能忍受

通过EXPLAIN发现,extra中有数据是Using join buffer (Block Nested Loop),而其它关联的表都是Using index,最后使用排除法发现当extra为Using join buffer (Block Nested Loop)是最慢的,就算加了索引也没用,后来发现是索引加的不对

应该在链接的条件列上加索引(两个表都要加),并且链接的条件列需要在索引的首位(表所有索引中的第一个索引列),使用此方法完成索引修改之后,速度瞬间提升了,以前要10多秒的也提升到了毫秒级

实例

添加索引

效果:

mysql Using join buffer (Block Nested Loop) join连接查询优化的更多相关文章

  1. 解决:Using where; Using join buffer (Block Nested Loop)

    问题:left join 时候触发了全表查询导致很慢 解决:Using where; Using join buffer (Block Nested Loop) 总结:其实就是把left join 改 ...

  2. SQL Server nested loop join 效率试验

    从很多网页上都看到,SQL Server有三种Join的算法, nested loop join, merge join, hash join. 其中最常用的就是nested loop join. 在 ...

  3. 1122MySQL性能优化之 Nested Loop Join和Block Nested-Loop Join(BNL)

    转自http://blog.itpub.net/22664653/viewspace-1692317/ 一 介绍  相信许多开发/DBA在使用MySQL的过程中,对于MySQL处理多表关联的方式或者说 ...

  4. MySQL Block Nested Loop and Batched Key Access Joins(块嵌套循环和批量Key访问连接)

    Block Nested-Loop and Batched Key Access Joins Batched Key Access (BKA) Join算法通过index和join buffer访问j ...

  5. 44 答疑(三)--join的写法/Simple nested loop join的性能问题/Distinct和group by的性能/备库自增主键问题

    44 答疑(三) Join的写法 35节介绍了join执行顺序,加了straight_join,两个问题: --1 如果用left join,左边的表一定是驱动表吗 --2 如果两个表的join包含多 ...

  6. 禁用nested loop join里的spool

    禁用nested loop join里的spool 转载自: https://blogs.msdn.microsoft.com/psssql/2015/12/15/spool-operator-and ...

  7. Oracle 表的连接方式(1)-----Nested loop join和 Sort merge join

    关系数据库技术的精髓就是通过关系表进行规范化的数据存储,并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理. 表的三种关联方式: nested loop:从A表抽一条记录,遍历B表查找匹配 ...

  8. Merge join、Hash join、Nested loop join对比分析

    简介 我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge Join,Hash Join ...

  9. 浅谈SQL Server中的三种物理连接操作(Nested Loop Join、Merge Join、Hash Join)

    简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge J ...

  10. join中级篇---------hash join & merge join & nested loop Join

    嵌套循环连接(Nested Loop Join) 循环嵌套连接是最基本的连接,正如其名所示那样,需要进行循环嵌套,嵌套循环是三种方式中唯一支持不等式连接的方式,这种连接方式的过程可以简单的用下图展示: ...

随机推荐

  1. 你知道 Java 有哪些引用吗?

    前言 判断对象是否要回收有引用计数法和可达性算法两种方式,无论哪种都离不开引用,本文将介绍Java的四种引用. 一.概述 二.详解 1. 强引用 概述 在Java程序中,强引用是最常见的也是默认的.n ...

  2. kubernetes之包管理器Helm

    安装helm 安装helm客户端 [machangwei@mcwk8s-master ~]$ curl https://raw.githubusercontent.com/kubernetes/hel ...

  3. 我们小公司,哪像华为一样,用得上IPD(集成产品开发)?

    在一些咨询或活动现场,我们经常听到有朋友说:我们是小公司,IPD(集成产品开发)太厚重了,不适合我们.但--到底哪里不合适? 提及IPD,成功的案例多以大公司为主:20世纪90年代,IBM在激烈的市场 ...

  4. phpstorm对laravel开发的配置

    摘自:https://www.cnblogs.com/Richard-Tang/p/10218178.html phpstorm对laravel开发的配置   一.安装Laravel 1.下载comp ...

  5. 【c#】JavaScriptSerializer 不序列化null值

    首先引用dll :System.Web.Extensions. 再自定义转换器代码如下: public class JavaScriptSerilizeConvert : JavaScriptConv ...

  6. Android 13 - Media框架(31)- ACodec(七)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 之前的章节中我们解了 input buffer 是如何传递给 OMX 的,以及Output buffer 是如何分配并且注册给 OMX 的.这一节我 ...

  7. k8s中的pod更新策略

    StatefulSet(有状态集,缩写为sts)常用于部署有状态的且需要有序启动的应用程序,比如在进行SpringCloud项目容器化时,Eureka的部署是比较适合用StatefulSet部署方式的 ...

  8. Qt-FFmpeg开发-保存视频流裸流(11)

    音视频/FFmpeg #Qt Qt-FFmpeg开发-保存视频流裸流 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发-保存视频流裸流 1.概述 2.实现效果 3.FFmpeg保存裸流代码流 ...

  9. ReplayKit2 有线投屏项目-反向Socket实现

    一.需求 我们在使用RTMP协议进行推流的时候,底层仍然采用的是TCP协议或者QUICK协议,有客户端主动发起请求.但是在有线投屏中,需要PC端向手机发起请求建立连接 二.实现 在客户端主动发起请求之 ...

  10. ABC335

    输 E 对于 \((u,v)\): 若 \(a_u = a_v\),则把 \(u\) 和 \(v\) 扔到同一个并查集里 否则连接两个点 然后跑一遍 dp 即可. code F 根号分治 如果 \(a ...