广告
返回顶部
首页 > 资讯 > 数据库 >mysql索引命中规则是什么?
  • 500
分享到

mysql索引命中规则是什么?

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

首先我们来了解一下最左匹配原则,如下:1、先定位该sql的查询条件,有哪些,那些是等值的,那些是范围的条件。2、等值的条件去命中索引最左边的一个字段,然后依次从左往右命中,范围的放在最后。分析讲解 1、My

首先我们来了解一下最左匹配原则,如下:

1、先定位该sql的查询条件,有哪些,那些是等值的,那些是范围的条件。

2、等值的条件去命中索引最左边的一个字段,然后依次从左往右命中,范围的放在最后。

分析讲解

1、Mysql的索引分为聚簇索引和非聚簇索引,mysql的表是聚集索引组织表。

聚集规则是:有主键则定义主键索引为聚集索引;没有主键则选第一个不允许为NULL的唯一索引;还没有就使用innodb的内置rowid为聚集索引。

非聚集索引也称为二级索引,或者辅助索引。

2、mysql的索引无论是聚集索引还是非聚集索引,都是B+树结构。聚集索引的叶子节点存放的是数据,非聚集索引的叶子节点存放的是非聚集索引的key和主键值。B+树的高度为索引的高度。

3、索引的高度

聚集索引的高度决定了根据主键取数据的理论io次数。根据非聚集索引读取数据的理论IO次数还要加上访问聚集索引的IO次数总和。实际上可能要不了这么多IO。因为索引的分支节点所在的Page因为多次读取会在mysql内存里cache住。

mysql的一个block大小默认是16K,可以根据索引列的长度粗略估算索引的高度。

sql优化依据

SQL语句中的where条件,使用以上的提取规则,最终都会被提取到Index Key (First Key & Last Key),Index Filter与Table Filter之中。

Index First Key,只是用来定位索引的起始范围,因此只在索引第一次Search Path(沿着索引B+树的根节点一直遍历,到索引正确的叶节点位置)时使用,一次判断即可;

Index Last Key,用来定位索引的终止范围,因此对于起始范围之后读到的每一条索引记录,均需要判断是否已经超过了Index Last Key的范围,若超过,则当前查询结束;

Index Filter,用于过滤索引查询范围中不满足查询条件的记录,因此对于索引范围中的每一条记录,均需要与Index Filter进行对比,若不满足Index Filter则直接丢弃,继续读取索引下一条记录;

Table Filter,这是最后一道where条件的防线,用于过滤通过前面索引的层层考验的记录,此时的记录已经满足了Index First Key与Index Last Key构成的范围,并且满足Index Filter的条件,回表读取了完整的记录,判断完整记录是否满足Table Filter中的查询条件,同样的,若不满足,跳过当前记录,继续读取索引的下一条记录,若满足,则返回记录,此记录满足了where的所有条件,可以返回给前端用户

分析

一条sql语句要执行完成需要经历什么样的过程?

当一条sql语句提交给mysql数据库进行查询的时候需要经历以下几步:

1、先在where解析这一步把当前的查询语句中的查询条件分解成每一个独立的条件单元;

2、mysql会自动将sql拆分重组;

3、然后where条件会在B-tree index这部分进行索引匹配,如果命中索引,就会定位到指定的table records位置。如果没有命中,则只能采用全部扫描的方式;

4、根据当前查询字段返回对应的数据值。

如下图:

mysql索引命中规则是什么?

以上就是mysql索引命中规则讲解的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: mysql索引命中规则是什么?

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql索引命中规则是什么?
    首先我们来了解一下最左匹配原则,如下:1、先定位该sql的查询条件,有哪些,那些是等值的,那些是范围的条件。2、等值的条件去命中索引最左边的一个字段,然后依次从左往右命中,范围的放在最后。分析讲解 1、my...
    99+
    2022-10-18
  • MySQL索引优化规则是什么
    这篇文章将为大家详细讲解有关MySQL索引优化规则是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。今天mysql教程栏目为大家介绍MySQL的索引优化规则。前言索引的...
    99+
    2022-10-18
  • sql索引使用规则是什么
    这篇“sql索引使用规则是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“sql索引使用规则是什么”文章吧。1.索引概述1...
    99+
    2023-07-05
  • MySQL索引创建原则是什么
    本篇内容介绍了“MySQL索引创建原则是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2023-05-25
    mysql
  • mysql中索引的最左原则是什么
    今天就跟大家聊聊有关mysql中索引的最左原则是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、MySQL不会使用索引的情况:非独立的列独立的列是指索引列不能是表达式的一部分,...
    99+
    2023-06-15
  • drools规则引擎是什么
    推荐教程:java教程Drools简介  Drools(JBoss Rules )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已...
    99+
    2018-04-29
    java教程 drools java
  • mysql索引建立的原则是什么
    小编给大家分享一下mysql索引建立的原则是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!尽量选择区分度高的列来建立索引。频繁查询列适合建立索引。遇到联合索引时,想想最左边的匹配原则。like模糊查询时,%在前面时才会...
    99+
    2023-06-25
  • mysql索引优化的原则是什么
    MySQL索引优化的原则包括以下几点: 选择合适的索引类型:MySQL支持多种索引类型,包括B-Tree索引、哈希索引和全文索引...
    99+
    2023-10-28
    mysql
  • java中的规则引擎是什么
    今天就跟大家聊聊有关java中的规则引擎是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3....
    99+
    2023-06-14
  • MySQL中索引基础知识及使用规则
    目录 一.InnoDB索引 二.B+树 三.聚集索引和辅助索引 四.索引实战 五.索引操作与规则 重建索引 索引覆盖 最左前缀原则 索引下推 用索引和用索引快速定位却别 六.普通索引和唯一索引如何选择 前提 普通索引和唯一...
    99+
    2020-03-29
    MySQL中索引基础知识及使用规则
  • Mysql中复合索引使用规则有哪些
    这篇文章主要介绍了Mysql中复合索引使用规则有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 联合索引验证:从左向右发挥作用索引:(...
    99+
    2022-10-18
  • MySQL索引最左匹配原则是什么
    本篇内容介绍了“MySQL索引最左匹配原则是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • mysql加锁规则是什么
    这篇文章主要讲解了“mysql加锁规则是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql加锁规则是什么”吧!说明next-keylock是加锁的基本单位。next-keylock...
    99+
    2023-06-25
  • MySQL中字符串索引的创建规则有哪些
    MySQL中字符串索引的创建规则有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如何更好的创建字符串索引我们知道,MySQ...
    99+
    2022-10-18
  • mysql联合索引生效的原则是什么
    MySQL联合索引生效的原则是遵循最左前缀原则。也就是说,联合索引在查询时,只有按照索引的最左边的列开始查询时,索引才会生效。如果不...
    99+
    2023-10-27
    mysql
  • Mysql索引的最左前缀原则是什么
    这篇文章主要介绍了Mysql索引的最左前缀原则是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql索引的最左前缀原则是什么文章都会有所收获,下面我们一起来看看吧。前言之所以有这个最左前缀索引归根结底是...
    99+
    2023-06-29
  • javascript中命名变量的规则是什么
    这篇“javascript中命名变量的规则是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2022-10-19
  • C语言中的命名规则是什么
    本篇内容主要讲解“C语言中的命名规则是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中的命名规则是什么”吧!一、常见命名规则  比较著名的命名规则,首推匈牙利命名法。这种命名方法,是由...
    99+
    2023-06-17
  • java变量命名规则是什么
    Java变量命名规则如下:1. 只能以字母、下划线或美元符号开头。2. 后续字符可以是字母、数字、下划线或美元符号。3. 大小写敏感...
    99+
    2023-10-09
    java
  • java驼峰命名规则是什么
    Java驼峰命名规则是一种命名规范,用于命名Java中的变量、方法和类。它的主要特点是:1. 首字母小写,后续的每个单词首字母大写,例如:myVariableName。2. 类名的首字母大写,后续的每个单词首字母大写,例如:MyClas...
    99+
    2023-08-09
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作