当前位置: 首页 > ai >正文

到底可不可以用jion?jion如何优化?

前言

jion其实是可以使用的 但是一定要选择小表作为驱动表。


到底可不可以用jion?jion如何优化?

  • 前言
  • jion的执行过程涉及到两个算法
    • 一个是simple nested
    • 另一个算法是Black nested
  • jion语句优化
  • MRR优化
  • 如果一个查询,被驱动表很大且都是冷数据,那么会导致什么问题呢?

jion的执行过程涉及到两个算法

一个是simple nested

A表有N行,B表有M行
假设是 dbA jion dbB on dbA.a =dbB.a

如果在B表的a字段上有索引,那么执行流程就是,扫描B表,然后扫描B表的索引拿到结果,在索引上找到一个数据基本是log2的
扫描行数为 N+Nlog2的M次方。
因此驱动表越小 效率越高。
如果没有索引的话 就需要M
N次查询了。

另一个算法是Black nested

如果NM 很大。MySQL并不会这么运行,而是使用Black nested 。
执行流程是,先把A表的数据放到jion_buffer中,然后取出B表数据做一一对比。
这个过程在内存中效率会高一些。
如果jion_buffer_size设置大小不够放下A表。就会分多次x对比。这样多等值对比的次数还是N
M
但是需要扫描B表x次。
x与N呈现正相关。
因此总数为N+N的某种正相关*M
因此也是小表做驱动表更快。

jion语句优化

MRR优化

首先理解MRR优化,就是虽然在普通索引上去主键索引上查找的时候是一个一个查询的。

但是如果查询之间是有顺序的,那么也会加快查询,
因此如果在查询之前添加了一个排序,一般主键索引都是单调递增的。

所以排序之后,可以更快的查询。

利用这个思想:jion查询时simple nested 可以将驱动表的结构排序之后,再到被驱动表里查询会加快查询。这种方式称为ack。

那么对于black nested如何优化呢,就是变成ack,通过加索引或者改造sql或者通过业务侧分开查询创建hash来实现。

如果一个查询,被驱动表很大且都是冷数据,那么会导致什么问题呢?

  1. 会有大量io操作,影响性能

  2. 会导致buffer_pool失效,因为如果3/8分区时,jion之后被驱动表可能会在一秒内进行多次扫描,导致冷数据替换掉了3的部分,导致整个缓存命中率下降。

  3. 进行N*M次对比,占用cpu资源。

http://www.xdnf.cn/news/16099.html

相关文章:

  • 力扣-152.乘积最大子数组
  • 自己开发VUE之web网页打包技术毕业论文——仙盟创梦IDE
  • 【科研绘图系列】R语言绘制双侧坐标轴的条形图
  • NPM/Yarn完全指南:前端开发的“基石“与“加速器“
  • 第4章唯一ID生成器——4.1 分布式唯一ID
  • 电脑录屏软件推荐:如何使用oCam录制游戏、教程视频
  • ue4 优化
  • 完成多项问题修复,MaxKB开源企业级智能体平台v1.10.9 LTS版本发布
  • Webpack/Vite 终极指南:前端开发的“涡轮增压引擎“
  • 侯捷---c++面向对象高级编程
  • 制造工厂高效出图新技术——共享云桌面
  • JavaSE:学习输入输出编写简单的程序
  • list 介绍 及 底层
  • ESP32使用 vscode IDF 创建项目到烧录运行全过程
  • Flink-1.19.0源码详解8-ExecutionGraph生成-前篇
  • RabbitMQ简述
  • vue3 el-table 列数据合计
  • 在一个网页浏览器的控制台测试后端java是否支持SSE服务
  • Vulnhub Matrix-Breakout-2-Morpheus靶机攻略
  • 基于规则架构风格对业务的重构
  • 每日算法刷题Day52:7.24:leetcode 栈5道题,用时1h35min
  • RPG64.制作敌人攻击波数四:优化
  • 让复杂 AI 应用构建就像搭积木:Spring AI Alibaba Graph 使用指南与源码解读
  • 企业级数据分析创新实战:基于表格交互与智能分析的双引擎架构
  • es0102---语法格式、数据类型、整合springboot、创建库、创建映射、新增数据、自定义查询
  • 【Qt开发】信号与槽(一)
  • node.js中的fs与path模块
  • 主流摄像头协议及其开源情况,GB/T 28181协议介绍
  • 云原生MySQL Operator开发实战(一):Operator基础与CRD设计
  • [语言模型训练]基于 PyTorch 的双向 LSTM 文本分类器实现:基于旅店的评论分类语言模型