Chỉ để làm rõ: một bảng có thể có nhiều nhất một khóa chính. Khóa chính bao gồm một hoặc nhiều cột (từ bảng đó). Nếu khóa chính bao gồm hai hoặc nhiều cột, nó được gọi là khóa chính tổng hợp. Nó được định nghĩa như sau:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
Cặp (QuestionID, MemberID) phải là duy nhất cho bảng và giá trị không được là NULL. Nếu bạn thực hiện một truy vấn như sau:
SELECT * FROM voting WHERE QuestionID = 7
nó sẽ sử dụng chỉ mục của khóa chính. Tuy nhiên, nếu bạn làm điều này:
SELECT * FROM voting WHERE MemberID = 7
nó sẽ không vì sử dụng chỉ mục tổng hợp yêu cầu sử dụng tất cả các phím từ "trái". Nếu chỉ mục nằm trên các trường (A, B, C) và tiêu chí của bạn là B và C thì chỉ mục đó không sử dụng cho bạn đối với truy vấn đó. Vì vậy, hãy chọn từ (QuestionID, MemberID) và (MemberID, QuestionID) tùy theo cách nào phù hợp nhất cho cách bạn sử dụng bảng.
Nếu cần thiết, thêm một chỉ mục trên kia:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);
"Và QuestionID và MemberID sẽ là khóa chính." (QuestionID, MemberID) sẽ là khóa * chính *. Chỉ có một khóa và nó bao gồm hai cột. – Draemon