突然想到在 mysql 的索引树中是否存储了重复数据,还是重复数据仅仅存在最后的叶子节点构成的双向链表中?
stackoverflow 上有一个相关的问题,https://stackoverflow.com/questions/38197083/innodb-b-tree-index-duplicate-values
但是貌似没有说到重点上啊。
1
tuzhenyu 2017-10-10 13:39:44 +08:00
聚合索引要求非空唯一,如果没有满足字段则会自建一列用作聚合索引,非聚合索引(普通索引)叶节点指向聚合索引的键,不存在索引重复数据问题
|
2
Weixiao0725 OP @tuzhenyu 你好,比如假设现在有一个普通索引,我插入数据 1,2,2,3,3,4,该索引树中是只有 1,2,3,4 四个数字,还是索引树中包括 1,2,2,3,3,4 全部数字
|
3
sunkuku 2017-10-19 18:27:48 +08:00
如果是 hash 索引,确实是双向链表。
但是再索引树中,找到区间之后,是做的顺序读,所以不存在双向链表也不存在重复索引 |
4
sunkuku 2017-10-19 18:36:58 +08:00
刚才讲错,纠正下:
如果是 hash 索引,确实是双向链表。 但是再索引树中,是存在节点,上面的索引值是重复的 |