美文网首页
理解B+树,就能真正记住MySQL索引优化规则

理解B+树,就能真正记住MySQL索引优化规则

作者: 小杨不是小羊 | 来源:发表于2024-04-03 23:31 被阅读0次

B+树是一种多路搜索树,相较于B树有以下特性:
节点分为内部节点、叶子节点、根节点(根节点在某些情况下也属于内部节点、叶子节点)。
每个节点最多包含m-1个关键字、m个子节点。
内部节点不存储数据只作为索引使用,所有数据存储在叶子节点中。
节点中的关键字均为有序,取节点中某一关键字x,x左侧关键字与节点均小于x右侧关键字与节点均大于x。
所有叶子节点由指针有序相连。

B+树作为索引的优势

  1. 高效的查找性能: 通常情况下索引因大小问题无法一次性加载到内存中,必然涉及磁盘IO。B+树的内部节点不包含具体数据能够包含更多的关键字以减少树的高度,这就意味着可以减少磁盘IO。

  2. 适合范围查询: B+树的叶子节点按照键值大小顺序连接形成有序链表,这使得范围查询和范围扫描操作变得高效。B+树能够快速定位到范围查询的起始位置,并且在有序链表上进行连续扫描。

索引优化和B+树

  1. 出现在where关键词后面的字段适合设置为索引列,或者连接子句中指定的列也是可以设置为索引列;
    选择列创建索引~

  2. 对于唯一性的列,设置索引效果是最佳的;而对于具有多个重复值的列,其索引效果是最差的。 因此设置索引时,大家需要考虑该列中值的分布情况;
    唯一索引在B+树叶子节点中只占一个值,可以通过内部节点快速找到。非唯一索引在找到之后还需要根据链表继续向后查找。在极端情况下可能读了一半叶子节点这样索引基本没有效果

  3. 短索引原则即指定前缀长度,节省大量索引空间。 索引类型占空间越小每次IO能够读取更多的节点。反之则增加磁盘IO次数。

  4. 适度设置索引列:设置索引时要考虑设置合适的列,不要造成“过多的索引列”。索引不是越多越好,在插入数据以及删除数据时需要维护相应的索引树则会降低插入删除效率。

  5. 联合索引,遵循最左前缀匹配原则: 最左匹配原则并不是指查询条件的顺序,而是指查询条件中是否包含索引最左列字段;
    使用联合索引时索引树内关键字是同时包含联合索引中所有的列并按照顺序排列,如果不包含左侧列的查询时是无法使用联合索引的。

  6. 索引列不能参与计算,保持列“干净”: 如果索引列使用了函数或者其他计算就会导致索引失效,因为索引树中存储的都是原值如果应用函数就要全部都应用显然得不偿失。

  7. 范围条件存在多个索引时,查询可以命中索引: 范围条件有:<、<=、>、>=、between等,因为B+树的叶子节点都是有序存放的。如果是联合索引则最左匹配原则遇到范围查找后终止,返回查找后的列无法使用索引。因为范围查找出的记录是按照左侧列包含范围查找列排序的,无法保证右侧索引列有序故而右侧索引列失效。

  8. 利用覆盖索引进行查询,避免回表:innodb引擎是将所有数据存放在聚集索引中的,由主键构成的索引包含记录数据。其他索引时不包含记录数据的只包含聚集索引中的主键,如果查询使用了非聚集索引且改索引上无法满足查询则需要通过主键在聚集索引中再次检索称之为回标,如果当前索引中包含的查询的所有列则可直接返回。

相关文章

  • 聊一聊B+树

    标签: 图解B+树 | B+树代码|mysql 聚集索引|mysql B+树索引| 前言   虽然B+是B-演化过...

  • MYSQL的索引与B+Tree

    MySQL 索引与 B+ 树 B+ 树 MySQL Innodb 存储引擎是使用 B+ 树来组织索引的。在介绍 B...

  • MySQL基础索引优化流程

    MySQL索引简介 一种优化查询的数据结构,比如Mysql中的索引是用B+树实现的,而B+树就是一种数据结构,可以...

  • 61 mysql索引底层实现

    Mysql性能优化原理 1.MySQL索引数据结构类型有那些?hash B+树2.Hash索引、二叉树、平衡二...

  • mysql高级知识

    mysql高级知识系列目录 存储过程与函数 理解MySQL数据库覆盖索引 为什么 MySQL 索引要使用 B+树而...

  • mysql 索引

    ** mysql 的索引的构成以及优化** (B+树 网上来,但并不是索引的实现,索引是用双向链表) InnoD...

  • Mysql - 组合索引的B+树存储结构(最左前缀原理)

    Mysql的B+树索引在单列索引上比较好理解,结构如下: 那组合索引的B+树存储结构是什么样的呢,为什么会有最左前...

  • MySQL,必须掌握的6个知识点

    目录 一、索引B+ Tree 原理 MySQL 索引 索引优化 索引的优点 索引的使用条件 二、查询性能优化使用 ...

  • 索引的作用,优缺点

    mysql : 使用B+树建立索引。 索引的优缺点:

  • InnoDB-索引

    四、索引 mysql支持的常见索引:B+,全文、hash 1.B+树索引 B+树索引可以分为聚簇索引和非聚簇索引。...

网友评论

      本文标题:理解B+树,就能真正记住MySQL索引优化规则

      本文链接:https://www.haomeiwen.com/subject/kaqntjtx.html