美文网首页程序员
Mysql - 索引为什么使用B+树结构

Mysql - 索引为什么使用B+树结构

作者: 夹胡碰 | 来源:发表于2021-01-06 23:27 被阅读0次

索引较快的方式首先想到的就是二叉树,但是二叉树分布不均匀,容易形成部分链表,之后想到可以使用平衡二叉树,但是平衡二叉树也不行,原因如下:

操作系统与磁盘一次数据交换的单位是页,一页4K,即每次IO操作都会将4K内容加载到内存中,但是二叉树每个节点只保存一个关键字,一个数据区,两个子节点的引用,不够填满4K的空间,辛苦做了一次IO,却只加载了一个关键字,在树的高度很高,恰好又搜索的关键字位于叶子节点或者支节点的时候,取一个关键字要做很多次的IO,这显然是很耗费性能的。

为了解决这个问题,便使用B+树,即多路树解决这个问题, B+树作为索引的特点:

  1. 多路树,树的高度比较矮,减少磁盘IO
  2. 叶子节点自成链表,范围查询及排序走索引(排除执行优化)
  • B+树结构


注意
  1. B+树返回查询和order by 都走索引
  2. 用explain验证的时候有时没有走索引是因为执行引擎会根据数据量及IO等方面自动判定是否走索引,例如查询的数据量本身很小,就不需要走索引,或者走索引处理会更耗时,就选择全表扫描。

参考

  1. 深入理解MySQL索引之B+Tree

相关文章

  • MySQL基础

    一、为什么用自增列作为主键 二、为什么使用数据索引能提高效率 MySql默认是B+树结构,原因是默认有主键索引。使...

  • MySQL数据库索引选择使用B+树

    为什么MySQL数据库索引选择使用B+树? 在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小...

  • Mysql InnoDB B+树索引和哈希索引的区别?Mongo

    Mysql InnoDB B+树索引和哈希索引的区别?MongoDB 为什么使用B-树?

  • MYSQL的索引与B+Tree

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

  • mysql高级知识

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

  • 索引的作用,优缺点

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

  • MySQL高频面试

    1.MySQL 索引使用什么数据结构?为什么用 B+做索引? 使用B+树。这个问题,可以在脑子里面先思考一下,如果...

  • Mysql - 索引为什么使用B+树结构

    索引较快的方式首先想到的就是二叉树,但是二叉树分布不均匀,容易形成部分链表,之后想到可以使用平衡二叉树,但是平衡二...

  • 索引相关

    1.MySQL中使用较多的索引有Hash索引,B+树索引2.InnoDB默认索引实现为:B+树 hash索引 1....

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

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

网友评论

    本文标题:Mysql - 索引为什么使用B+树结构

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