索引的数据结构和具体存储引擎的实现有关,在MySQL中较多的索引有Hash索引、B+树索引等。InnoDB存储引擎的默认索引实现为:B+树索引。
对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议使用BTree索引。
B+树
B+树是一个平衡树,从根节点到每个叶子节点的高度差不超过1,而且同层级的节点间有指针相互链接。
在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动。效率非常高。因此,B+树索引被广泛的应用于数据库、文件系统等场景。
哈希索引
哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需要一次哈希算法,即可立刻定位到相应的位置,速度非常快。
适用范围
等值查询:哈希索引
范围查询:B+树