首页 文章

MySQL InnoDB:具有多列密钥与单个md5哈希密钥

提问于
浏览
1

设's say I have a table with a composite primary key consisting of 3 varchar(256) columns: A, B, and C. There'也是B上的索引,复合键充当A的索引 . 此表有数百万行,有很多 INSERTSSELECTS ,但没有 UPDATES (除了使用 ON DUPLICATE KEY UPDATEINSERTS ) .

如果我将此表更改为具有单个列char(32)主键md5(A,B,C)(以及A上的索引和B上的索引),这种设置对于INSERTS会更有效吗?碰撞的可能性并没有打扰我 .

MySQL 5.5,使用InnoDB

1 回答

  • 1

    在InnoDB中,主键是群集密钥 - 磁盘上的数据是根据PK的顺序进行物理组织的 . 这意味着如果你没有使用自动增量或其他一些随着时间的推移增加PK值的东西,你会得到很多随机写入,一旦表的大小大于buffer_pool,这将会破坏你的性能尺寸 .

    记住这一点,md5()不会比插入的复合索引好多少 . 具有较小的PK有两个原因:PK的大小影响所有二级索引的大小(因为所有二级索引都包含PK)并且使用较小的索引更好(因为您可以一次将更多的值加载到内存中)

相关问题