多列主键(MySQL)的最大列数是多少?它依赖于列数据类型还是引擎?MySQL多列主键
回答
是的,这取决于存储引擎。
-
The maximum number of columns per index is 16. The maximum key length is 1000 bytes. This can also be changed by changing the source and recompiling. For the case of a key longer than 250 bytes, a larger key block size than the default of 1024 bytes is used.
-
The InnoDB internal maximum key length is 3500 bytes, but MySQL itself restricts this to 3072 bytes. This limit applies to the length of the combined index key in a multi-column index.
谢谢。很好的答案。 –
我发现这一点:
有人试图创建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
- 1. MySQL的多主键
- 2. 带有多列的MySQL InnoDB主键
- 3. MySQL中的多列主键5
- 4. 多列的主键?
- 5. Django - 多列主键
- 6. MySQL许多表主键
- 7. 非主键列MySQL索引
- 8. MySQL中的两列主键
- 9. MySQL和2列主键
- 10. MySQL双列主键困难
- 11. MySQL - 多对多表 - 主键和副本
- 12. 如何在MySQL中通过多列主键选择多行?
- 13. 多列上的Sqlite主键
- 14. 多列SQLite ORM主键
- 15. PostgreSQL中多列的主键?
- 16. GreenDAO - 多列上的主键
- 17. 无法创建外键多列主键
- 18. MySQL中的多列外键?
- 19. 多列上的MySQL外键?
- 20. MySQL:多个主键和自动递增
- 21. MySQL的REPLACE查询有多个主键
- 22. 更改多个MySQL主键的值
- 23. 多字段主键的MySql问题
- 24. MySQL表格设计:主要外国多列键可能吗?
- 25. MySql的多列作为主键不起作用
- 26. MySQL中的多列主键是一个优化问题吗?
- 27. 多列主键的MySQL KEY值(在desc表中)是什么?
- 28. 使用主键的MySQL链接列
- 29. MySQL主键列上的重复索引?
- 30. 重新排列mysql中的主键
其16 SQL Server 2008中..不知道生根粉的MySQL –
[本文是从2006年(HTTP ://www.xaprb.com/blog/2006/04/17/max-key-length-in-mysql/),它表示主键的最大长度是1000字节。我不确定自那以后有没有改变。 – Taryn
我认为MyiSAM的限制是1000字节,InnoDB引擎的限制是3072。 –