索引(MySQL)

45 阅读1分钟

问题与方案

在没有索引之前,想要查询到目标数据,通常采用直接按该字段中的顺序进行查找。读取磁盘数据到内存再进行判断的过程中,读取离散存储在不同页上数据带来了频繁的磁盘I/O问题。因此,为了减少不必要读取的数据,引入索引以减少磁盘I/O次数来提高查询效率。

概念

索引是帮助MySQL高效获取数据的数据结构。通过二叉树的基本数据结构,对数据进行排序,以满足二分法的快速查询算法。

特点

  • 减少磁盘I/O
  • 减少数据分组和排序的时间
  • 保证数据唯一性
  • 加速表与表之间的连接
  • 索引的创建和维护所耗费的时间随着数据规模不断增加
  • 增加了更新表所耗费的时间
  • 索引的存储占用了磁盘空间

索引数据存储方式

聚簇索引和非聚簇索引

数据存储结构

  • 哈希 Hash
  • AVL树 Binary Search Tree(平衡二叉搜索树)
  • B树 Balance Tree(多路平衡查找树)
  • B+树 Balance Tree(多路搜索树,MySQL针对数据库数据存储特化的Balance Tree)