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:这很模糊-你不明白什么?如果我保留idprimary KEY(id),UNIQUE KEY(category\u id,posts\u id)
,我的UNIQUE和primary KEY应该是这样吗,我最初的建议是——坦率地说,我认为id
栏没有任何用处。