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 · Oct 10, 2017 · 6987 views
    This topic created in 3164 days ago, the information mentioned may be changed or developed.

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

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

    如果是 hash 索引,确实是双向链表。
    但是再索引树中,是存在节点,上面的索引值是重复的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5436 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 01:16 · PVG 09:16 · LAX 18:16 · JFK 21:16
    ♥ Do have faith in what you're doing.