› 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 · 7294 views
    This topic created in 3285 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   ·   Privacy   ·   Solana   ·   5697 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:13 · PVG 16:13 · LAX 01:13 · JFK 04:13
    ♥ Do have faith in what you're doing.