Apenas para esclarecimento: uma tabela pode ter no máximo uma chave primária. Uma chave primária consiste em uma ou mais colunas (dessa tabela). Se uma chave primária consistir em duas ou mais colunas, é chamada de chave primária composta . É definido da seguinte forma:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
O par (QuestionID, MemberID) deve ser exclusivo para a tabela e nenhum dos valores pode ser NULL. Se você fizer uma consulta como esta:
SELECT * FROM voting WHERE QuestionID = 7
ele usará o índice da chave primária. Porém, se você fizer isso:
SELECT * FROM voting WHERE MemberID = 7
não vai porque usar um índice composto requer o uso de todas as chaves da "esquerda". Se um índice está nos campos (A, B, C) e seus critérios estão em B e C, então esse índice não tem utilidade para você para essa consulta. Portanto, escolha entre (QuestionID, MemberID) e (MemberID, QuestionID) o que for mais apropriado para como você usará a tabela.
Se necessário, adicione um índice no outro:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);