8

多列主键(MySQL)的最大列数是多少?它是否取决于列数据类型或引擎?

4

2 回答 2

8

是的,这取决于存储引擎。

  • MyISAM

    每个索引的最大列数为 16。最大键长度为 1000 字节。这也可以通过更改源并重新编译来更改。对于长度超过 250 字节的密钥,使用比默认值 1024 字节更大的密钥块大小。

  • 创新数据库

    InnoDB 内部最大密钥长度为 3500 字节,但 MySQL 本身将其限制为 3072 字节。此限制适用于多列索引中组合索引键的长度。

于 2012-10-11T12:48:26.683 回答
0

我找到了这个:

有人试图用 2 列创建一个 PK 并收到此错误:
“指定的密钥太长;最大密钥长度为 1024 字节”所以看起来最大值为 1024 字节,列数无关紧要,真正重要的是var 类型和空间分配它。

我见过一些这样的例子:

create table OS_PROPERTYENTRY (entity_name VARCHAR(125) not null, entity_id BIGINT not null,

entity_key VARCHAR(255) not null date_val DATETIME, primary key (entity_name, entity_id, entity_key))

在哪里

125 *(3 个字节)+ 255 *(3 个字节)+ 1 *(8 个字节)= 1148 个字节。所以不可能创建一个PK。

看看这里,他们谈论它:https ://jira.atlassian.com/browse/CONF-2783

于 2012-10-11T12:36:21.753 回答