扫码阅读
手机扫码阅读

MySQL索引:提升数据库性能的关键利器

281 2024-07-17

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:MySQL索引:提升数据库性能的关键利器
文章来源:
springboot葵花宝典
扫码关注公众号
MySQL索引摘要

MySQL索引:提升数据库性能的关键利器

1. MySQL索引的定义与作用

MySQL索引是一种数据结构,通过维护数据值与其表中位置的映射关系,快速定位数据,类似于书的目录。索引显著提高了查询效率,但同时也占用存储空间并影响数据更新速度。

2. MySQL索引的类型与支持

2.1 索引类型

MySQL支持以下几种索引结构:

  • B-Tree索引:支持等值查找、范围查找和排序操作,是最常用的索引类型。
  • 哈希索引:适用于等值查找,但不支持范围查询和排序。
  • 全文索引:用于全文搜索,主要应用于文本数据匹配。
  • R-tree索引:用于地理数据查询。

2.2 存储引擎支持对比

索引 InnoDB MyISAM Memory
B-Tree 支持 支持 支持
哈希 不支持 不支持 支持
空间索引 不支持 支持 不支持
全文索引 部分支持 支持 不支持

3. B-Tree与B+Tree

3.1 B-Tree特点

B-Tree是一种多叉路平衡树,具有平衡性和按序存储的特点。其高度较低,有助于减少磁盘I/O次数,提升查询性能。

3.2 B+Tree优化

B+Tree是对B-Tree的增强结构,分为索引部分(非叶子节点,仅存储索引)和数据部分(叶子节点,存储具体数据)。通过增加叶子节点间的链表指针,提高区间访问和排序性能。

3.3 B+Tree优势

  • 支持范围查询,效率高。
  • 存储更多索引数据,减少磁盘I/O次数。
  • 叶子节点存储所有数据,支持全表扫描。

4. 哈希索引

哈希索引通过哈希算法将键值映射到槽位,适用于等值查找但不支持范围查询或排序。其查询效率高,但存在哈希冲突问题。

5. 索引分类

  • 主键索引:唯一且不允许为NULL。
  • 唯一索引:数据列不允许重复,但允许NULL。
  • 普通索引:无唯一性限制。
  • 全文索引:用于全文搜索。
  • 覆盖索引:查询列被索引覆盖。
  • 组合索引:多列组成的索引。

6. 聚集索引与二级索引

6.1 定义与特点

  • 聚集索引:将数据与索引存储在一起,只能有一个。
  • 二级索引:数据与索引分开存储,可以有多个。

6.2 SQL查找过程

执行SQL时,通过二级索引查找主键,再回表查询聚集索引获取完整数据。

7. 面试题

7.1 为什么选择B+Tree结构?

B+Tree支持范围查询,树层级低,磁盘I/O效率高,且能避免大量数据更新带来的性能问题。

7.2 SQL执行效率对比

主键查询效率高于二级索引查询,后者需要回表操作。

7.3 B+Tree高度计算

根据一页存储16行数据,B+Tree高度为2时可存储约18,736行数据,高度为3时可存储约22,000,000行。

如果您觉得本文不错,欢迎点赞与分享!

想要了解更多内容?

查看原文:MySQL索引:提升数据库性能的关键利器
文章来源:
springboot葵花宝典
扫码关注公众号