1、索引定义
索引是存储引擎用于快速定位记录的⼀种数据结构。
索引类似于书籍的目录,想找到一本书的某个特定的主题,需要先找到书的目录,定位对应的页码。MySQL 中存储引擎使用类似的方式进行查询,先去索引中查找对应的值,然后根据匹配的索引找到对应的数据行。
2、索引类型
- B+树索引
- 全文索引
- 哈希索引
InnoDB存储引擎支持的哈希索引是自适应的,即自适应哈希索引。其根据表的使用情况自动为表生成哈希索引,不能人为干预。
3、索引结构
MySQL数据库索引采用的是B+Tree结构,在B-Tree结构上做了优化改造。B+树中的B代表平衡(balance),而不是二叉(binary)。B+树是通过二叉查找树,再由平衡二叉树,B树演化而来。
3.1、二叉查找树
二叉树具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。
如下图所示就是一棵二叉查找树,
对该二叉树的节点进行查找发