MySQL多列主键

时间:2012-10-11 11:33:21

标签: mysql

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

2 个答案:

答案 0 :(得分:6)

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

  • MyISAM

      

    每个索引的最大列数为16.最大密钥长度   是1000字节。这也可以通过更改源和更改来更改   重新编译。对于长度大于250字节的密钥的情况,更大的密钥   块大小超过默认的1024字节。

  • InnoDB

      

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

答案 1 :(得分:1)

我发现了这个:

有人试图创建一个包含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