join的优化

news/2025/2/13 20:07:58/

join的优化

multi_range read优化(mrr)

  • 大多数的数据都是按照顺序来新增的,如果按照顺序对主键进行访问,接近于磁盘的顺序读,提高性能
    • 根据索引定位到满足条件的记录,将id放入read_rnd_buffer
    • 将read_rnd_buffer的id进行递增排序
    • 排序后的id数组,依次到主键查记录,作为结果返回
      稳定性的使用mrr,要用 set optimizer_switch=“mrr_cost_based=off”
      用explain时,在extra有using MRR,就是使用到了

Batchd key access(对NLj的优化,Index Nasted-Loop join)5.6之后

在这里插入图片描述

  • 也就是在mrr的基础上加了join buffer(依赖MRR)
    要使用BKA的话,要在执行sql之前,执行下面这命令
set optimizer_switch='mrr=on,mrr_cost_based=off,batched_key_access=on';

Block Nasted-Loop join(BLN)的缺点

  • 可能会多次扫描被驱动表,占用io资源
  • 判断 join 条件需要执行 M*N 次对比(M、N 分别是两张表的行数),如果是大表就会占用非常多的 CPU 资源;
  • 可能会导致 Buffer Pool 的热数据被淘汰,影响内存命中率

优化

  • 在被驱动表的join字段上面加索引,把BLN转成BKA
  • 如果在被驱动表的join字段不好加索引,可以引入临时表,把被驱动表符合条件的数据放入临时表,然后给临时表join的字段加索引(为了触发BKA),降低了被驱动表的数据量,也优化了
create temporary table temp_t(id int primary key, a int, b int, index(b))engine=innodb;
insert into temp_t select * from t2 where b>=1 and b<=2000;
select * from t1 join temp_t on (t1.b=temp_t.b);

hash join的优化

  • 如果join buffer里面不是无序数组,而是hash的话,就能精准匹配了,所以可以在业务系统里面自己加
  • 把驱动表符合要求的数据放到业务系统中,并维护一个hash,然后从被驱动表中获取符合要求的数据,在来和hash进行匹配和淘汰,数据量大的情况比临时表来的快

http://www.ppmy.cn/news/858360.html

相关文章

mysql主动自增可以_Mysql join联表及id自增实例解析

join的写法 如果用left join 左边的表一定是驱动表吗&#xff1f;两个表的join包含多个条件的等值匹配&#xff0c;都要写道on还是只把一个写到on&#xff0c;其余写道where部分&#xff1f; createtablea(f1int,f2int,index(f1))engineinnodb; createtableb(f1int,f2int)engin…

java创建map对象吗_[Java教程]JavaScript创建Map对象(转)

/* * MAP对象&#xff0c;实现MAP功能 * * 接口&#xff1a; * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KEY的元素&#xff0c;成功返回True&am…

Unidbg适合做算法还原吗?(一)

Unidbg是模拟执行的强大工具&#xff0c;这是毋庸置疑的&#xff0c;可是&#xff0c;它在算法还原上是否依然是得力的助手&#xff1f;或者说&#xff0c;当我们想要对一个样本进行算法还原而非模拟执行呢&#xff0c;需要关注Unidbg吗&#xff1f; 我们看一下AB两人的辩论&a…

php基本程序打印方法,PHP教程.程序控制-PHP教程,PHP基础

程序控制 本章深入php内部&#xff0c;讲述如何使用函数、表达式和语句以实现对程序的控制。 前面的章节初步介绍了怎样操作数据&#xff0c;如果我们将操作数和操作符看作是构筑元件的话&#xff0c;那么它们组合起来即可形成表达式。进一步讲&#xff0c;表达式可以构成语句&…

matlab保存bln文件,气象万千(冯锦明课题组)-软件程序

气象研究中几种流行的数据分析与绘图软件 GRADS - 简捷易用&#xff0c;但功能较弱&#xff0c;尤其是数据处理功能。 NCL - 针对气象&#xff0c;专业功能强大&#xff0c;实例丰富。函数名难记&#xff0c;部分功能灵活性偏弱。 IDL - 针对地学&#xff0c;功能强大。使用便捷…

global mapper 导入bln文件和tif文件

打开数据文件&#xff0c;注意在bln文件中&#xff0c;这个投影一定要选对。这样就可以将两个文件的信息叠加在一起了。

Golden Software BLN文件格式

Golden Software的BLN文件一种ASCII格式文件&#xff0c;用于存储包括多边形、多段线和点在内的地理信息。空间信息只关心空间中的对象的位置(即它们的坐标)&#xff0c;而不是它们的属性(例如&#xff0c;行或填充样式&#xff0c;使用的标记符号&#xff0c;文本标签等等)。尽…

丰密面单打印 隐私面单 C#开发

目录 前言**图一****图二** 1.完成前期准备工作2.API接口3.请求参数&#xff08;Headers&#xff09;4.请求参数&#xff08;Body&#xff09;5.返回参数&#xff08;Return&#xff09;6.请求报文&#xff08;示例&#xff09;7.成功返回报文&#xff08;示例&#xff09;8.失…