1 简介
索引底层就是一种数据结构,空间换时间,能够帮助我们快速定位到对应的数据,就类似于字典里面的目录一样。
索引虽然能快速检索数据,但会影响数据修改的操作,而且索引存储在具体的文件,占用一定的空间(MySQL安装目录下的data文件存储),因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
2 索引类型
-
从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引
-
应用层次划分:普通索引、唯一索引、主键索引、组合索引
-
索引键值类型划分:主键索引、辅助索引(二级索引)
-
数据存储和索引键值逻辑关系划分:聚簇和非聚簇索引
3 数据结构
MySQL索引的数据结构是B+Tree,但是又对B+Tree做了一点改造(双向指针)。
这里推荐一个关于数据结构的网站:Data Structure Visualization
3.1 二叉树
左小又大,一个父元素下面只能存储两个子元素。