2010-08-22 63 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