Dla wyjaśnienia: tabela może mieć co najwyżej jeden klucz podstawowy. Klucz podstawowy składa się z co najmniej jednej kolumny (z tej tabeli). Jeśli klucz podstawowy składa się z dwóch lub więcej kolumn, nazywany jest złożonym kluczem podstawowym . Jest zdefiniowany w następujący sposób:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
Para (QuestionID, MemberID) musi wtedy być unikalna dla tabeli i żadna z wartości nie może mieć wartości 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
tak się nie stanie, 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 znajdują się na B i C, to ten indeks nie jest dla ciebie przydatny dla tego zapytania. Więc wybierz spośród (QuestionID, MemberID) i (MemberID, QuestionID) w zależności od tego, co jest najbardziej odpowiednie do tego, jak będziesz korzystać z tabeli.
W razie potrzeby dodaj indeks na drugim:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);