InnoDB 非唯一索引重复键是如何排列的?

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 非唯一索引重复键是如何排列的?的详细内容,更多请关注其它相关文章!