Просто для пояснения: таблица может иметь не более одного первичного ключа. Первичный ключ состоит из одного или нескольких столбцов (из этой таблицы). Если первичный ключ состоит из двух или более столбцов, он называется составным первичным ключом . Это определяется следующим образом:
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);