美文网首页
对于Mysql索引的理解(一)

对于Mysql索引的理解(一)

作者: 倚仗听江 | 来源:发表于2020-08-25 09:10 被阅读0次

索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据。
最常见的索引是Btree索引Hash索引
不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引;而Mermory默认的索引是Hash索引。
既然聊到了B+树,那就不得不提一下B树了。
B树是一棵多路自平衡搜索树,它类似于普通的二叉树,但是它允许每个节点有更多的子节点。
B树的特点:

  • 所有的键值分布在整棵树中(区别于B+树)
  • 任何关键字出现且只能出现在一个节点
  • 搜索有可能在非叶子节点完成
  • 在关键字全集内做一次查找,性能逼近二分查找
B树(简化).png

B+树是一种B树的变体,也是一种多路自平衡搜索树,示意图如下:


B+树(简化).png
  1. B+树的非叶子节点不存储真正的data
  2. 为所有的叶子节点增加了一个链指针
  3. MySISM中的data存储的是物理地址,由物理地址找到数据;而Innodb中的data存储的是数据

那么为什么Mysql使用的是B+树而不是B树呢?

  1. B+树更加适合磁盘存储,由于它的非叶子节点不存储数据,所以每一个节点都可以存储更多的非叶子节点,这样每个节点能索引的范围就更大更准确。也就是说使用B+树单次IO得到的信息量更大,IO的效率更高。
  2. Mysql是关系型数据库,经常会按照某个区间来访问索引列。B+树在叶子节点间按顺序建立了链指针(双向链表),加强了区间访问性。所以B+树对索引列上的区间访问很友好,而B树每个节点的key和data在一起,无法进行区间访问。

顺便再来提提Hash索引
Hash索引是基于哈希表实现的,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎会给所有索引列计算一个哈希码,哈希码是一个比较小的值,并且不同键计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。
​Memory支持hash索引
优点:检索效率很高
缺点:1. 无法被用来避免数据的排序操作

  1. 仅仅能满足”=”,”IN”和”<=>”查询,不能使用范围查询。
  2. 遇到大量hash冲突时会消耗性能
  3. 不能利用部分索引键查询,因为哈希索引是根据全部索引列计算的哈希码。

好了,以上就是我对于Mysql索引的一些理解,本人才疏学浅,如有不对,还望批评指正。

相关文章

  • 对于Mysql索引的理解(一)

    索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据。最常见的索引是Btree索引和Hash索引。不同的引...

  • 对于Mysql索引的理解

    前言: 对于数据库中的索引,一个非常好的类比是把数据库索引看作是书的索引。如果你有一本关于狗的书,你想要找关于...

  • MySql索引

    索引的本质:MySQL官方对于索引的定义为:索引是帮助MySQL高效获取数据的数据结构。即可以理解为:索引是数据结...

  • 对于Mysql索引的理解(二)

    对于Mysql的索引有很多比较专业的词汇,这次就来讲讲这些回表查询、索引覆盖、最佳左前缀、索引下推。 1. 回表查...

  • 熬夜都要看的SQL索引分享,Mysql8中的降序索引底层实现

    MySQL 性能优化的要求也越来越高, 而索引方面是性能优化重点考虑的方向,所以深入理解 MySQL索引对于未来的...

  • MySQL的索引原理与查询优化

    一、MySQL 索引简介 1、 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL...

  • mysql索引总结----mysql 索引类型以及创建(转载)

    一、索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度 二、索引的...

  • mysql索引

    索引 mysql索引的建立对于mysql的高效运行是很重要的,索引可以大大提高mysql的检索速度。索引分单列索引...

  • 9.MySQL索引

    索引 索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。因此,数据...

  • 浅谈mysql数据库索引

    索引类型 索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。mysql索引大致可...

网友评论

      本文标题:对于Mysql索引的理解(一)

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