2011-06-12 56 views
5

我知道InnoDB中的主键是集群化的。因此,使用自动增量整数作为主键具有已被排序并提高插入性能的好处。InnoDB如何排序多列主键

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

id int auto increment 
hash Guid 

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

所以我正在考虑创建一个主键为(ID,散列).ID列将用于与其他表的连接。

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

它会首先使用id列,然后使用散列函数,还是使用其他方法来确定密钥的顺序?前者会更好,因为它从已经排序的auto inc列中受益,但我无法找到任何有关如何在组合列上完成排序的信息。

任何深入了解这是极大的赞赏:)

+1

它将按id,hash排序。 – 2011-06-12 12:21:12

+0

我认为它会和DDL一样,因为顺序很重要。通常,数据库系统不能为您指定订单。主键的顺序是性能调整的一个因素。 – 2011-07-11 06:58:31

回答

1

主键上的多个colums由MySQL作为所选择的列值的串联管理。因此,第一列可以更快地排序,因为它将在汇总的开始处。