V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
Weixiao0725
V2EX  ›  MySQL

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

  •  
  •   Weixiao0725 · 2017-10-10 12:30:58 +08:00 · 6074 次点击
    这是一个创建于 2361 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    4 条回复    2017-10-19 18:36:58 +08:00
    tuzhenyu
        1
    tuzhenyu  
       2017-10-10 13:39:44 +08:00
    聚合索引要求非空唯一,如果没有满足字段则会自建一列用作聚合索引,非聚合索引(普通索引)叶节点指向聚合索引的键,不存在索引重复数据问题
    Weixiao0725
        2
    Weixiao0725  
    OP
       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
        3
    sunkuku  
       2017-10-19 18:27:48 +08:00
    如果是 hash 索引,确实是双向链表。
    但是再索引树中,找到区间之后,是做的顺序读,所以不存在双向链表也不存在重复索引
    sunkuku
        4
    sunkuku  
       2017-10-19 18:36:58 +08:00
    刚才讲错,纠正下:

    如果是 hash 索引,确实是双向链表。
    但是再索引树中,是存在节点,上面的索引值是重复的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3326 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 13:22 · PVG 21:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.