InnoDB 非唯一索引重复键是如何排列的?
innodb 非唯一索引重复键排列
当 innodb 引擎下的非唯一索引包含重复键值时,其排列方式引发了疑问。一些资料提到使用溢出页进行哈希冲突处理,而另一些则对此予以否认。
排列机制
事实上,非唯一索引会同时存储对应行的主键 id。这意味着,即使索引字段具有重复值,b+树也会按照主键 id 进行排序。
示例
假设以下两条记录具有相同的非唯一索引值“ccc”:
- 记录 1:id=4, name='ccc'
- 记录 2:id=5, name='ccc'
在这种情况下,b+树中的排列如下:
+-------------+-------------+ | name | record_ptr | +-------------+-------------+ | ccc | 4 | +-------------+-------------+ | ccc | 5 | +-------------+-------------+
在这个例子中,b+树的叶节点存储了索引字段值“ccc”和对应行的主键 id(4 和 5)。因此,可以通过主键 id 来区分具有重复索引值的记录。
以上就是InnoDB 非唯一索引重复键是如何排列的?的详细内容,更多请关注其它相关文章!