MySQL表主键问题?

MySQL表主键问题?,sql,mysql,primary-key,Sql,Mysql,Primary Key,我想知道我的主键应该是这样的主键(id,category\u id,posts\u id)还是这样的主键(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 KE

我想知道我的主键应该是这样的
主键(id,category\u id,posts\u id)
还是这样的
主键(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)
);
我建议使用:

PRIMARY KEY (category_id, posts_id)
id
值将始终是唯一的-不唯一的是
category\u id
posts\u id
的配对


但是我没有注意到您已经在
category\u id
posts\u id
列上定义了一个唯一的键,因此您的主键可能就是
id
。但是主键意味着它将是一个聚集索引-搜索这两列的次数将超过搜索
id
列的次数,因此搜索应该比搜索这两列上的非聚集索引每分钟改进一次。

多列键称为a或a


如前所述,它们是完全有效的,并且有好处。请参阅链接。:-)

UNIQUE KEY(category\u id,posts\u id)
是用来阻止重复条目的。@OMG Ponies,那你想说什么?@maximus:这很模糊-你不明白什么?如果我保留id
primary KEY(id),UNIQUE KEY(category\u id,posts\u id)
,我的UNIQUE和primary KEY应该是这样吗,我最初的建议是——坦率地说,我认为
id
栏没有任何用处。