Mysql中有哪些减少回表的操作?

回表是指,InnoDB 在普通索引 a 上查到主键 id 的值后,再根据一个个主键 id 的值到主键索引上去查整行数据的过程。

  • 使用覆盖索引
  • 如果 select 的数据列只用从索引中就能够取得,不必从数据区中读取,这时候使用的索引就叫做 覆盖索引
  • Explain 中 Using index,表示这个语句使用了覆盖索引。
  • 索引下推 在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数
  • join语句中的 MRR优化,通过这个优化的主要目的是尽量使用顺序读盘。
  • 回表肯定是一行行搜索主键索引的。虽然”按行查”这个机制不能改,但是调整查询的顺序,还是能够加速的。
  • 在join的时候,会一次取出一批数据的字段到 join_buffer中,然后批量join,对这批数据进行递增排序,因为 按照主键的递增顺序查询的话,对磁盘的读比较接近顺序读,能够提升读性能。顺序读,利用到了磁盘预读,会一次读取一个数据页(索引页)到内存中,下次查询相邻的数据就可以直接从内存中读
  • 利用延迟关联或者子查询优化超多分页场景
  • Mysql在进行order by 排序的时候,如果 MySQL 认为内存足够大,会优先选择全字段排序,把需要的字段都放到 sort_buffer中,这样排序后就会直接从内存里面返回查询结果了,不用再回到原表去取数据。

Original: https://www.cnblogs.com/dong320/p/14888559.html
Author: 轨迹320
Title: Mysql中有哪些减少回表的操作?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/573460/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spring 源码(10)Spring Bean 的创建过程(1)

    Spring Bean的创建刚开始进行了一些准备工作,比如转换服务的初始化,占位符解析器的初始化, BeanDefinition元数据的冻结等操作,都是为了在创建Bean的过程中保…

    Java 2023年6月14日
    071
  • Mac_配置jdk环境变量

    进入命令行 cd ~ touch .bash_profile vi .bash_profile 输入内容jdk变量配置内容: JAVA_HOME=/Library/Java/Jav…

    Java 2023年5月30日
    079
  • 20220812-Java内部类

    跟老韩学完了java面向对象的高级篇,老师提到了卖油翁和老黄牛的故事,在学习Java的路上,借以自勉,”我亦无他,唯手熟尔”,天道酬勤,长路漫漫,少年加油,…

    Java 2023年6月15日
    083
  • gdb–多线程

    改配置, 设为只有一个work线程. 查看所有线程的bt状态(每个线程运行到何处了) thread apply all bt 根据1中的信息, 找到work线程, attach上去…

    Java 2023年5月29日
    075
  • 快速上手FastJSON

    作为一名后端开发而言肯定会接触数据,把数据提供给前端或者把数据存储起来,目前比较火热的传输格式是json,给前端传json是再常见不过啦,甚至是往db里面直接存入json。 在ja…

    Java 2023年6月5日
    077
  • Yarn安装与配置

    使用 npm 命令安装 *在此之前必须已经安装了 node 和 npm (node自带npm) 全局安装 npm install -g yarn 环境变量–配置环境变量…

    Java 2023年5月29日
    069
  • IDEA使用JDBC链接MySql(java编程)

    1、在Maven的pom.xml文件中引入MySql的驱动 2、idea(版本:2021.2.2)JDBC链接MySql数据库 3、编写JDBC代码 : Original: htt…

    Java 2023年6月7日
    068
  • Markdown语法

    “###”+空格+内容 “####”+空格+内容(依此类推..) 斜体( + 内容 + ) 粗体( + 内容 + ) 斜体+粗体( …

    Java 2023年6月6日
    072
  • 找到搜索二叉树中的错误结点

    找到搜索二叉树中的错误结点 问题重述: 一个二叉搜索树,其中的两个结点位置发生了互换,先给出二叉树的根节点,要求得到两个错误的结点 问题分析: 因为二叉搜索树的结构满足,当前节点大…

    Java 2023年6月7日
    075
  • 日常踩坑_jpa存储时失败,报错SQL Error: 1064, SQLState: 42000错误

    背景交代 使用jpa的save保存对象时,发现死活存不进去,然后报错了SQL Error: 1064, SQLState: 42000错误 然后,机智的我当然是把原生sql粘贴出来…

    Java 2023年6月7日
    089
  • SpringBoot-Mybatis

    SpringBoot 整合 Mybatis SpringBoot-Mybatis 10.1 导入 MyBatis 所需要的依赖 org.mybatis.spring.boot my…

    Java 2023年6月5日
    062
  • maven常见问题汇总

    主要记录一些学习及工作时遇到过的一些问题。 1 版本问题 由于版本兼容问题配置maven折腾了一点时间。例:IDEA 2019以上版本与maven3.6.3以上版本不兼容我的笔记本…

    Java 2023年6月8日
    075
  • SSH 端口转发(本地转发与远程转发)

    SSH 端口转发处于机构SSH用于从所述客户端机器隧道应用程序的端口到服务器计算机上,或反之亦然。它可用于为 遗留应用程序添加加密、 通过防火墙,并且一些系统管理员和 IT 专业人…

    Java 2023年5月30日
    088
  • springbbot 启动流程

    3.9 refreshContext(context); 刷新context 开始执行spring的那一套refresh 但是它稍微重写了context的一些方法 3.9.1 重写…

    Java 2023年6月5日
    090
  • Spring Cloud Gateway整合Sentinel流控降级

    https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81 pom.xml <…

    Java 2023年5月30日
    0103
  • CSharp: QuestPDF create pdf file in donet core 6

    csharp;gutter:true; /// /// geovindu, Geovin Du,涂聚文 Edit /// public class DuModel {</p&…

    Java 2023年6月16日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球