Dla jasności: tabela może mieć najwyżej jeden klucz podstawowy. Klucz podstawowy składa się z jednej lub więcej kolumn (z tej tabeli). Jeśli klucz podstawowy składa się z dwóch lub więcej kolumn, nazywa się złożony klucz podstawowy . Jest ona zdefiniowana w następujący sposób:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
para (QuestionID, MemberID) musi być unikalny dla tabeli ani wartość może być NULL. Jeśli wykonasz takie zapytanie:
SELECT * FROM voting WHERE QuestionID = 7
użyje indeksu klucza podstawowego. Jeśli jednak to zrobisz:
SELECT * FROM voting WHERE MemberID = 7
nie będzie, ponieważ użycie indeksu złożonego wymaga użycia wszystkich klawiszy od "lewej". Jeśli indeks znajduje się na polach (A, B, C), a twoje kryteria dotyczą B i C, to ten indeks nie przydaje się dla ciebie w tym zapytaniu. Więc wybierz (QuestionID, MemberID) i (MemberID, QuestionID), który z nich jest najbardziej odpowiedni do tego, jak będziesz korzystać z tabeli.
W razie potrzeby dodać indeks na drugiej:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);
„A QuestionID i MemberID będzie klucze podstawowe”. (QuestionID, MemberID) będzie (złożonym) podstawowym * kluczem *. Jest tylko jeden klucz i składa się z dwóch kolumn. – Draemon