【MySQL索引 | 第1篇】索引介绍以及索引的结构

15,606次阅读
没有评论

共计 961 个字符,预计需要花费 3 分钟才能阅读完成。

文章目录

  • 1. 什么是索引?
  • 2. 索引的优缺点
  • 3. 索引结构
  • 4. B-Tree(多路平衡查找树)
  • 5. 经典 B +Tree
  • 6. MySQL 索引数据结构中的 B +Tree
  • 7. Hash


【MySQL 索引 | 第 1 篇】索引介绍以及索引的结构

1. 什么是索引?

  • 索引(index)是帮助 MySQL 高效获取数据 数据结构 有序)。

2. 索引的优缺点

  • 优点:
    提高检索效率 ,降低数据库 IO 成本;通过索引对数据进行排序, 降低数据排序成本,降低 CPU 的消耗。
  • 缺点:
    索引列 占用空间 ;索引在提高查询效率的同时也 降低了更新表的速度,在对数据表的 INSERT、UPDATE、DELETE 操作时,效率降低。

3. 索引结构

MySQL 索引在存储引擎层实现,不同的存储引擎有不同的结构。
有以下存储引擎:
【MySQL 索引 | 第 1 篇】索引介绍以及索引的结构

  • B+Tree 索引:最常见的索引类型,大部分引擎都支持 B+ 树索引。(平时说的索引,通常没有特别指明,都是 B+ 树索引)
  • Hash 索引:底层数据结构是哈希表实现的,只有精确匹配索引列 的查询才有效,不支持范围查询
  • R-Tree(空间索引):MyISM 引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少。
  • Full-text(全文索引):通过建立倒排索引,快速匹配文档的方式。类似于 Lucene,Solr,ES。

4. B-Tree(多路平衡查找树)

5. 经典 B +Tree

6. MySQL 索引数据结构中的 B +Tree

  • MySQL 索引数据结构对经典的 B +Tree 进行了优化。在原 B +Tree 的基础上,增加了一个指向相邻叶子节点的链表指针,形成了带 有顺序的指针 的 B +Tree,提高区间访问的性能。
    在这里插入图片描述

7. Hash

  • 哈希索引就是采用一定的 Hash 算法,将键值换算成新的 hash 值,映射到对应的槽位上,然后存储在 hash 表中
  • 如两个(或多个)键值,映射到同一个槽位上,就产生了 hash 冲突(hash 碰撞),可以通过 链表 来解决。
    在这里插入图片描述
  • 特点:
    • Hash 索引只能用于对等比较 (=,in), 不支持范围查询(between,>,
    • 无法 利用索引完成 排序操作
    • 查询效率高,通常只需要一次检索就可以了,效率通常要高于 B +tree 索引(若发生 hash 碰撞则不一定)
  • 存储引擎支持:在 MySQL 中,支持 hash 索引的是Memory 引擎,而innoDB 中具有自适应 hash 功能,hash 索引是存储引擎根据 B +Tree 索引在指定条件下自动构建的。

原文地址: 【MySQL 索引 | 第 1 篇】索引介绍以及索引的结构

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-23发表,共计961字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)