Nur zur Verdeutlichung: Eine Tabelle kann höchstens einen Primärschlüssel haben. Ein Primärschlüssel besteht aus einer oder mehreren Spalten (aus dieser Tabelle). Wenn ein Primärschlüssel aus zwei oder mehr Spalten besteht, wird er als zusammengesetzter Primärschlüssel bezeichnet . Es ist wie folgt definiert:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
Das Paar (QuestionID, MemberID) muss dann für die Tabelle eindeutig sein und keiner der Werte darf NULL sein. Wenn Sie eine Abfrage wie folgt durchführen:
SELECT * FROM voting WHERE QuestionID = 7
Es wird der Index des Primärschlüssels verwendet. Wenn Sie dies jedoch tun:
SELECT * FROM voting WHERE MemberID = 7
Dies ist nicht der Fall, da für die Verwendung eines zusammengesetzten Index alle Schlüssel von "links" verwendet werden müssen. Wenn sich ein Index auf Feldern (A, B, C) befindet und Ihre Kriterien auf B und C liegen, ist dieser Index für diese Abfrage für Sie nicht von Nutzen. Wählen Sie also zwischen (QuestionID, MemberID) und (MemberID, QuestionID), je nachdem, was für die Verwendung der Tabelle am besten geeignet ist.
Fügen Sie bei Bedarf einen Index hinzu:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);