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

MySQL - 覆盖索引、回表查询

  1. 覆盖索引

    • 覆盖索引是指一个索引包含了查询所需的所有列,而不需要进一步的访问主表。这意味着查询可以从索引本身中获取所有需要的数据,而不必访问主表的行记录。
    • 覆盖索引通常用于提高查询性能,因为它减少了I/O操作,降低了查询的成本。当查询可以完全依赖于索引,而无需回到主表获取数据时,就发生了覆盖索引。
  2. 回表查询

    • 回表查询是当某个查询无法从索引中获取所需的所有列数据,必须通过索引中的键值(通常是主键值)到主表中进行进一步查找的情况。
    • 通常,回表查询发生在普通索引中,因为普通索引的叶子节点只包含索引列的值和主键值,而不包含其他列的数据。当查询需要获取主表中的其他列时,数据库引擎会执行额外的查找操作,这个过程被称为回表。

在InnoDB存储引擎中,聚簇索引是特殊类型的索引,它的叶子节点存储整个行记录而不仅仅是索引列的值。只有一个聚簇索引,它通常是主键索引,因为主键是唯一标识一行记录的。在这种情况下,如果查询可以利用主键索引获取所有所需数据,就可以实现覆盖索引。否则,如果需要从主表中获取其他列数据,就会发生回表查询。

总结,覆盖索引是一种性能优化技术,允许查询从索引中获取所有需要的数据,而不需要回表到主表。回表查询则是当索引无法提供全部数据时,必须回到主表查找其他列数据的操作。聚簇索引通常用于实现覆盖索引,而普通索引通常导致回表查询。

相关文章:

  • Nacos | 使用 Nginx 转发 Nacos2.x 端口的注意事项
  • 多模态 多引擎 超融合 新生态!2023亚信科技AntDB数据库8.0产品发布
  • 【开发新的】apache common BeanUtils忽略null值
  • C# Onnx 用于边缘检测的轻量级密集卷积神经网络LDC
  • Kafka - 监控工具 Kafka Eagle:实时洞察Kafka集群的利器
  • P2107 小Z的AK计划
  • 如何读懂深度学习python项目,以`Multi-label learning from single positive label`为例
  • Fourier分析导论——第2章——Fourier级数的基本属性(E.M. Stein R. Shakarchi)
  • 一篇博客读懂顺序表 —— Sequence-List
  • FIFO 位宽转换
  • 力扣740. 删除并获得点数(动态规划)
  • Debian或Ubuntu静态交叉编译arm和aarch64
  • miniconda快速安装
  • 我的云栖大会之旅:见证云计算创新的15年
  • 使用springboot对Elasticsearch 进行索引的增、删、改、查
  • SegmentFault for Android 3.0 发布
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Apache的80端口被占用以及访问时报错403
  • express如何解决request entity too large问题
  • SQLServer插入数据
  • vue-cli在webpack的配置文件探究
  • vue中实现单选
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 关于字符编码你应该知道的事情
  • 记录:CentOS7.2配置LNMP环境记录
  • 老板让我十分钟上手nx-admin
  • 让你的分享飞起来——极光推出社会化分享组件
  • 什么是Javascript函数节流?
  • 思维导图—你不知道的JavaScript中卷
  • 自动记录MySQL慢查询快照脚本
  • python最赚钱的4个方向,你最心动的是哪个?
  • "无招胜有招"nbsp;史上最全的互…
  • # .NET Framework中使用命名管道进行进程间通信
  • (Matlab)使用竞争神经网络实现数据聚类
  • (poj1.2.1)1970(筛选法模拟)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (四)Android布局类型(线性布局LinearLayout)
  • (算法)Travel Information Center
  • (转)Linux整合apache和tomcat构建Web服务器
  • .apk文件,IIS不支持下载解决
  • .htaccess配置重写url引擎
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET与 java通用的3DES加密解密方法
  • .net中调用windows performance记录性能信息
  • /boot 内存空间不够
  • /etc/shadow字段详解
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • []C/C++读取串口接收到的数据程序
  • [C#][DevPress]事件委托的使用
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [C++核心编程](四):类和对象——封装