B-树索引又称为 BTREE 索引,目前大部分的索引都是采用 B-树索引来存储
的。
B-树索引是一个典型的数据结构,其包含的组件主要有以下几个:
• 叶子节点:包含的条目直接指向表里的数据行。叶子节点之间彼此
相连,一个叶子节点有一个指向下一个叶子节点的指针。
• 分支节点:包含的条目指向索引里其他的分支节点或者叶子节点。
• 根节点:一个 B-树索引只有一个根节点,实际上就是位于树的最顶
端的分支节点。
基于这种树形数据结构,表中的每一行都会在索引上有一个对应值。因此,在
表中进行数据查询时,可以根据索引值一步一步定位到数据所在的行。
B-树索引可以进行全键值、键值范围和键值前缀查询,也可以对查询结果进行
ORDER BY 排序。但 B-树索引必须遵循左边前缀原则,要考虑以下几点约
束:
• 查询必须从索引的最左边的列开始。
• 查询不能跳过某一索引列,必须按照从左到右的顺序进行匹配。
• 存储引擎不能使用索引中范围条件右边的列。
2) 哈希索引
哈希(Hash)一般翻译为“散列”,也有直接音译成“哈希”的,就是把任意长度
的输入(又叫作预映射,pre-image)通过散列算法变换成固定长度的输出,该
输出就是散列值。
哈希索引也称为散列索引或 HASH 索引。MySQL 目前仅有 MEMORY 存储
引擎和 HEAP 存储引擎支持这类索引。其中,MEMORY 存储引擎可以支持
B-树索引和 HASH 索引,且将 HASH 当成默认索引。
相关文档
评论