MySql 中索引如何处理重复数据

2017-10-10 12:30:58 +08:00
 Weixiao0725

突然想到在 mysql 的索引树中是否存储了重复数据,还是重复数据仅仅存在最后的叶子节点构成的双向链表中? stackoverflow 上有一个相关的问题,https://stackoverflow.com/questions/38197083/innodb-b-tree-index-duplicate-values
但是貌似没有说到重点上啊。

6103 次点击
所在节点    MySQL
4 条回复
tuzhenyu
2017-10-10 13:39:44 +08:00
聚合索引要求非空唯一,如果没有满足字段则会自建一列用作聚合索引,非聚合索引(普通索引)叶节点指向聚合索引的键,不存在索引重复数据问题
Weixiao0725
2017-10-10 21:03:55 +08:00
@tuzhenyu 你好,比如假设现在有一个普通索引,我插入数据 1,2,2,3,3,4,该索引树中是只有 1,2,3,4 四个数字,还是索引树中包括 1,2,2,3,3,4 全部数字
sunkuku
2017-10-19 18:27:48 +08:00
如果是 hash 索引,确实是双向链表。
但是再索引树中,找到区间之后,是做的顺序读,所以不存在双向链表也不存在重复索引
sunkuku
2017-10-19 18:36:58 +08:00
刚才讲错,纠正下:

如果是 hash 索引,确实是双向链表。
但是再索引树中,是存在节点,上面的索引值是重复的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/396428

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX