定义
索引是帮助Mysql高效获取数据的排好序的数据结构
数据结构
索引常用的数据结构有二叉树,红黑树,Hash表,B-Tree, B+Tree
- B+Tree数据结构
- 非叶子节点不存数据,只存索引,目的是为了存储更多的索引
- 叶子节点包含所有的索引字段
- 叶子节点用双向指针链接,提高区间查询的效率
由于B+Tree的结构特点,降低树的高度,减少磁盘I/O,从而大大提高了查询效率。
Mysql存储引擎
-
InnoDB
- InnoDB的索引和数据都在ibd文件
- 表数据文件是按照B+Tree来组织的一个索引结构文件
- 聚集索引-叶子节点包含了完整的数据记录
- 非聚集索引-叶子节点包含了索引和对应的主键
-
MyISAM
- MyISAM的索引文件(MYI)和数据文件(MYD)是分离的, 叶子节点存储的是索引所在行的磁盘文件地址
联合索引底层数据结构
- 遵循最左前缀原则,按照最左边的索引先排好序,再依次往后排序