MySQL表PRIMARY KEY问题?

时间:2010-08-22 22:27:03

标签: sql mysql primary-key

我想知道我的主键看起来应该是PRIMARY KEY (id, category_id, posts_id)还是看起来像这样PRIMARY KEY (id)

这是我的MySQL表。

CREATE TABLE posts_categories (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
category_id INT UNSIGNED NOT NULL,
posts_id INT UNSIGNED NOT NULL,
date_created DATETIME NOT NULL,
PRIMARY KEY (id, category_id, posts_id),
UNIQUE KEY (category_id, posts_id)
);

2 个答案:

答案 0 :(得分:2)

我建议使用:

PRIMARY KEY (category_id, posts_id)

id值始终是唯一的 - 不会是category_idposts_id的配对。

但我错过了您已在category_idposts_id列上定义了唯一键,因此您的主键可能只是id。但主键意味着它将是一个聚簇索引 - 您将比id列更多地搜索这两列,因此搜索应该在两列上的非聚集索引上进行微小改进。

答案 1 :(得分:0)

多列键称为Composite KeyCompound Key

如上所述,它们完全有效并且有益处。见链接。 : - )