Solo para aclarar: una tabla puede tener como máximo una clave primaria. Una clave principal consta de una o más columnas (de esa tabla). Si una clave primaria consta de dos o más columnas, se denomina clave primaria compuesta . Se define de la siguiente manera:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
El par (QuestionID, MemberID) debe ser único para la tabla y ninguno de los valores puede ser NULL. Si realiza una consulta como esta:
SELECT * FROM voting WHERE QuestionID = 7
utilizará el índice de la clave principal. Sin embargo, si haces esto:
SELECT * FROM voting WHERE MemberID = 7
no lo hará porque para usar un índice compuesto es necesario usar todas las claves de la "izquierda". Si un índice está en los campos (A, B, C) y sus criterios están en B y C, entonces ese índice no le sirve para esa consulta. Por lo tanto, elija entre (QuestionID, MemberID) y (MemberID, QuestionID) lo que sea más apropiado para cómo usará la tabla.
Si es necesario, agregue un índice en el otro:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);