返回顶部
首页 > 资讯 > 数据库 >如何理解MySQL索引下推
  • 559
分享到

如何理解MySQL索引下推

2024-04-02 19:04:59 559人浏览 八月长安
摘要

本篇内容主要讲解“如何理解Mysql索引下推”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解mysql索引下推”吧!- 思维导图 -回表操作对于数据库来说

本篇内容主要讲解“如何理解Mysql索引下推”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解mysql索引下推”吧!

如何理解MySQL索引下推

- 思维导图 -

回表操作

对于数据库来说,只要涉及到索引,必然绕不过去回表操作。当然这也是我们今天所讲内容的前调基础。

说到回表,我们需要从索引开始说起。别担心,不会长篇大论,这里只是简单讲下主键索引与普通索引,目的是让大家对回表操作有个认识。如果你对回表操作很熟悉了,那么可以跳过这一段。

这里我们只以 Innodb 存储引擎作为讲解对象。

主键索引

主键索引在底层的数据存储是通过 B+ 树来实现的。简单来说,就是除叶子节之外的其他节点都存储的是主键值。而叶子节点上存储的是整行的数据。

大体结构如下图所示。

如何理解MySQL索引下推

非主键索引

除了主键索引外,其它的索引都被称为非主键索引。与主键索引不同的是,非主键索引的叶子节点上存储的是主键的值。

如何理解MySQL索引下推

那让我们再回到开始的问题,什么是回表操作?

当我们在非主键索引上查找一行数据的时候,此时的查找方式是先搜索非主键索引树,拿到对应的主键值,再到主键索引树上查找对应的行数据。

这种操作就叫作回表操作。

好了,这里你应该了解了什么是回表操作了。简单来讲,就是在非主键索引树上拿到对应的主键值,然后回到主键索引上找到对应的行数据。

这样做的前提条件是,所要查找的字段不存在于非主键索引树上。

低版本操作

讲完了回表操作,让我们继续回到这篇文章的主题——索引下推。

其实在 Mysql 5.6 版本之前是没有索引下推这个功能的,从 5.6  版本后才加上了这个优化项。所以在引出索引下推前还是先回顾下没有这个功能时是怎样一种处理方式。

我们以一个真实例子来进行讲解。

在这里有张用户表 user,记录着用户的姓名,性别,身高,年龄等信息。表中 id 是自增主键,(name,sex) 是联合索引。在这里用 1 表示男,2  表示女。现在需要查找所有姓王的男性信息。

SQL 实现起来很简单:

如何理解MySQL索引下推

但是它的实现原理是什么呢?

根据联合索引最左前缀原则,我们在非主键索引树上找到第一个满足条件的值时,通过叶子节点记录的主键值再回到主键索引树上查找到对应的行数据,再对比是否为当前所要查找的性别。

整个原理可以用下边的图进行表示。


如何理解MySQL索引下推

看到了吧,低版本中需要每条数据都进行回表,增加了树的搜索次数。如果遇到所要查找的数据量很大的话,性能必然有所缺失。

高版本操作

讲完了低版本操作,让我们继续回到这篇文章的主题——索引下推。

知道了痛点,那么怎么解决。很简单,只有符合条件了再进行回表。结合我们的例子来说就是当满足了性别 sex = 1  了,再回表查找。这样原本可能需要进行回表查找 4 次,现在可能只需要 2 次就可以了。

如何理解MySQL索引下推

所以本质来说,索引下推就是只有符合条件再进行回表,对索引中包含的字段先进行判断,不符合条件的跳过。减少了不必要的回表操作。

总结

回表操作

当所要查找的字段不在非主键索引树上时,需要通过叶子节点的主键值去主键索引上获取对应的行数据,这个过程称为回表操作。

索引下推

索引下推主要是减少了不必要的回表操作。对于查找出来的数据,先过滤掉不符合条件的,其余的再去主键索引树上查找。

到此,相信大家对“如何理解MySQL索引下推”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: 如何理解MySQL索引下推

本文链接: https://lsjlt.com/news/61859.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解MySQL索引下推
    本篇内容主要讲解“如何理解MySQL索引下推”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解MySQL索引下推”吧!- 思维导图 -回表操作对于数据库来说...
    99+
    2024-04-02
  • 详解MySQL覆盖索引、索引下推
    目录 1.覆盖索引 1.1.概述 1.2.聚集索引、非聚集索引 1.3.回表查询 1.4.覆盖索引 2.索引下推 1.覆盖索引 1.1.概述 覆盖索引,是为了避免“回表查询”,从而降低查询耗时的一种使用索引的方法,所以要聊覆盖索引首先我...
    99+
    2023-09-10
    数据库 java 开发语言
  • mysql索引(覆盖索引,联合索引,索引下推)
    目录什么是索引?索引的实现方式innodb的索引模型索引维护覆盖索引联合索引索引下推什么是索引? 当我们使用汉语字典查找某个字时,我们会先通过拼音目录查到那个字所在的页码,然后直接翻到字典的那一页,找到我们要查的字,通过...
    99+
    2024-04-02
  • MySQL索引下推详细
    目录1、最左前缀原则2、回表3、索引下推前言: 索引下推(ICP)是针对MySQL使用索引从表中检索数据行的情况的优 在没有索引下推的情况下,MySQL通过存储引擎遍历索...
    99+
    2024-04-02
  • MySQL 回表,覆盖索引,索引下推
    目录回表覆盖索引索引下推无索引下推: 查看索引下推的状态有索引下推: 开启索引下推回表 在研究mysql二级索引的时候,发现Mysql回表这个操作,往下研究了一下 字面意思,找到索引,回到表中找数据 解释一下就是: 先通...
    99+
    2022-07-11
    MySQL回表 MySQL覆盖索引 MySQL索引下推
  • MySQL回表,覆盖索引,索引下推
    目录回表覆盖索引索引下推无索引下推: 查看索引下推的状态有索引下推: 开启索引下推回表 在研究mysql二级索引的时候,发现Mysql回表这个操作,往下研究了一下 字面意思,找到索引...
    99+
    2024-04-02
  • MySQL索引下推是什么
    本文小编为大家详细介绍“MySQL索引下推是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL索引下推是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。SELEC&...
    99+
    2024-04-02
  • MySQL索引下推(ICP)的简单理解与示例
    前言 索引下推(Index Condition Pushdown, 简称ICP)是MySQL 5.6 版本的新特性,它能减少回表查询次数,提升检索效率。 MySQL体系结构 要明白...
    99+
    2024-04-02
  • MySQL带你秒懂索引下推
    目录一、索引下推优化的原理 二、索引下推的具体实践 1、没有使用ICP 2、使用ICP 三、索引下推使用条件 索引下推(Index Condition Pushdown,简称ICP)...
    99+
    2024-04-02
  • 怎么在Mysql中索引下推
    这期内容当中小编将会给大家带来有关怎么在Mysql中索引下推,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本...
    99+
    2023-06-14
  • 如何理解MySQL索引原理
    本篇内容主要讲解“如何理解MySQL索引原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解MySQL索引原理”吧!案例背景假设面试官问你:在电商平台的订...
    99+
    2024-04-02
  • 如何理解MySQL索引cardinalit
    本篇内容主要讲解“如何理解MySQL索引cardinalit”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解MySQL索引cardinalit”吧!查看一...
    99+
    2024-04-02
  • Mysql性能优化之索引下推
    索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询。 在不使用ICP的情况下,在使用非主键索引(又叫普通索引或者二级索引)进行查询时,存储引擎通过索...
    99+
    2022-05-19
    Mysql 索引下推
  • Mysql索引下推有什么作用
    这篇文章主要讲解了“Mysql索引下推有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql索引下推有什么作用”吧!导读索引下推(index c...
    99+
    2024-04-02
  • 一篇文章带你了解MySQL索引下推
    目录前言SELECT 语句执行过程什么是索引下推?动手实验:索引下推限制拓展:虚拟列总结前言 本文围绕这三个话题来学习索引下推: SELECT 语句执行过程什么是索引下推?索引下推限制 SELECT 语句执行过...
    99+
    2024-04-02
  • 如何深入理解MySQL索引
    这篇文章将为大家详细讲解有关如何深入理解MySQL索引,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言当提到MySQL数据库的时候,我们的脑海里会想起几个...
    99+
    2024-04-02
  • MySQL查询性能优化索引下推
    目录前言1. 索引下推的作用2. 案例实践3. 索引下推配置4. 索引下推原理剖析5. 索引下推应用范围前言 前面已经讲了mysql的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种方式索引潜水 ...
    99+
    2022-08-16
    MySQL查询性能优化 MySQL索引下推
  • 如何进行MySQL索引条件下推的简单测试
    本篇文章给大家分享的是有关如何进行MySQL索引条件下推的简单测试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 自MySQL 5.6开始,...
    99+
    2024-04-02
  • 如何理解MySQL的索引技术?
    如何理解MySQL的索引技术?在数据库中,索引是一种提高查询效率的重要技术。MySQL作为一种流行的关系型数据库管理系统,其索引技术的运用能够显著提升查询性能。本文将从索引的定义、类型、创建和优化几个方面来解析MySQL的索引技术。首先,索...
    99+
    2023-10-22
    MySQL 索引技术
  • MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序 - G
    MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序   What"s Index 索引就是帮助RDBMS高效获取数据的数据结构。 索引可以让我们避免一行一行进行全表扫描。它的价值就是可以帮助你对数据进行快速...
    99+
    2018-09-14
    MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序 - G
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作