外观
索引的数据结构有哪些
索引的数据结构主要有B+
树和哈希表,对应的索引分别为B+
树索引和哈希索引。MySQL
的InnoDB
引擎的索引类型有B+
树索引和哈希索引,默认的索引类型为B+
树索引。
B+Tree
索引:B+Tree
是 B Tree
的变体,非叶子节点只存储索引键,数据都存储在叶子节点,且叶子节点通过指针相连形成有序链表。特别适合范围查询,因为可以通过叶子节点的链表快速遍历数据。优点是范围查询效率高,磁盘 I/O
次数少,缺点是插入和删除操作可能会导致节点分裂和合并,影响性能。
Hash
索引:使用哈希函数将索引键映射到哈希表中,通过哈希值快速定位数据存储位置。适用于精确匹配查询。
Hash
索引和B+
树索引的区别?
- 哈希索引不支持排序,因为哈希表是无序的。
- 哈希索引不支持范围查找。
- 哈希索引不支持模糊查询及多列索引的最左前缀匹配。
- 因为哈希表中会存在哈希冲突,所以哈希索引的性能是不稳定的,而B+树索引的性能是相对稳定的,每次查询都是从根节点到叶子节点。