InnoDB如何对多列主键进行排序

Ami*_*ila 5 mysql database-design innodb

我知道InnoDB中的主键是群集的.因此,使用自动增量整数作为主键具有已经排序的好处并提高了插入性能.

但问题是我有一个像这样的表有2列id和哈希(和其他一些但不重要);

id int auto increment
hash Guid
Run Code Online (Sandbox Code Playgroud)

我需要在哈希列上对此表进行分区,这意味着我必须将它放在主键中.

所以我想创建一个主键为(id,hash).id列将用于与其他表的连接.

问题是如果我将PK作为(id,hash),InnoDB将如何排序呢?

它会首先使用id列然后使用hash,还是会使用其他方式来确定键的顺序?前者会更好,因为它受益于已经排序的auto inc列,但我找不到有关如何在复合列上进行排序的任何信息.

任何洞察力都非常感谢:)

Mat*_*dic 1

多个列上的主键由 MySQL 作为所选列值的串联进行管理。因此,第一列可以更快地排序,因为它将位于聚合的开头。