【发布时间】:2011-09-13 07:44:15
【问题描述】:
我知道 InnoDB 中的主键是集群的。因此,使用自增整数作为主键的好处是已经排序并提高了插入性能。
但问题是我有一个这样的表,其中包含 2 列 id 和 hash(以及其他一些但不重要的列);
id int auto increment
hash Guid
我需要在哈希列上对这张表进行分区,这意味着我必须把它放在主键中。
所以我正在考虑创建一个主键为 (id,hash)。id 列将用于与其他表的连接。
问题是如果我将 PK 作为 (id,hash) InnoDB 将如何对其进行排序?
它会先使用 id 列然后散列,还是会使用其他方式来确定键的顺序?前者会更好,因为它受益于已经排序的 auto inc 列,但我找不到任何关于如何对复合列进行排序的信息。
非常感谢您对此的任何见解:)
【问题讨论】:
-
按照id、hash排序。
-
我认为它与 DDL 一样,因为顺序很重要。通常,数据库系统无法为您指定订单。而主键的顺序,是性能调优的一个因素。
标签: mysql database-design innodb