2010-08-22 65 views
1

我想知道我的主钥匙应该是这样的​​还是看起来像这样PRIMARY KEY (id)MySQL表主键问题?

这是我的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

我建议使用:

PRIMARY KEY (category_id, posts_id) 

id值将始终是唯一的 - 什么也不会,是category_idposts_id的配对。

但是我错过了你已经在category_idposts_id列上定义了一个唯一的密钥,所以你的主键可能只是id。但主键意味着它将成为一个聚集索引 - 您将搜索这两列的次数多于id列,因此搜索应该会在两列的非聚集索引上略微提高。

+0

为什么这是最好的选择? – maximus 2010-08-22 22:29:04

+0

'UNIQUE KEY(category_id,posts_id)'有停止重复的条目。 – maximus 2010-08-22 22:31:07

+0

@maximus:在你的问题中,这是多余的。查看我的更新 – 2010-08-22 22:32:28