【问题标题】:How InnoDB sorts multi column primary keysInnoDB 如何对多列主键进行排序
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2015-11-07
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多