Просто для пояснения: таблица может иметь не более одного первичного ключа. Первичный ключ состоит из одного или нескольких столбцов (из этой таблицы). Если первичный ключ состоит из двух или более столбцов, он называется составным первичным ключом . Он определяется следующим образом:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
Пара (QuestionID, MemberID) должна быть уникальной для таблицы, и ни одно из значений не может быть NULL. Если вы делаете запрос, подобный этому:
SELECT * FROM voting WHERE QuestionID = 7
будет использовать индекс первичного ключа. Однако, если вы делаете это:
SELECT * FROM voting WHERE MemberID = 7
этого не произойдет, потому что для использования составного индекса необходимо использовать все ключи слева. Если индекс находится по полям (A, B, C), а ваши критерии - по B и C, тогда этот индекс для вас бесполезен. Поэтому выберите один из вариантов (QuestionID, MemberID) и (MemberID, QuestionID) в зависимости от того, как вы будете использовать таблицу.
При необходимости добавить индекс по другому:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);