เพื่อความชัดเจน: ตารางสามารถมีคีย์หลักได้สูงสุดหนึ่งคีย์ คีย์หลักประกอบด้วยคอลัมน์อย่างน้อยหนึ่งคอลัมน์ (จากตารางนั้น) ถ้าคีย์หลักประกอบด้วยสองคอลัมน์หรือมากกว่าจะเรียกว่าคีย์หลักคอมโพสิต กำหนดไว้ดังนี้:
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);