Hanya untuk klarifikasi: sebuah tabel dapat memiliki paling banyak satu kunci utama. Kunci utama terdiri dari satu atau beberapa kolom (dari tabel itu). Jika kunci utama terdiri dari dua atau lebih kolom, itu disebut kunci utama komposit . Ini didefinisikan sebagai berikut:
CREATE TABLE voting (
QuestionID NUMERIC,
MemberID NUMERIC,
PRIMARY KEY (QuestionID, MemberID)
);
Pasangan (QuestionID, MemberID) harus unik untuk tabel dan tidak ada nilai yang boleh NULL. Jika Anda melakukan kueri seperti ini:
SELECT * FROM voting WHERE QuestionID = 7
itu akan menggunakan indeks kunci utama. Namun jika Anda melakukan ini:
SELECT * FROM voting WHERE MemberID = 7
itu tidak akan terjadi karena untuk menggunakan indeks komposit memerlukan penggunaan semua kunci dari "kiri". Jika indeks ada di bidang (A, B, C) dan kriteria Anda ada di B dan C maka indeks itu tidak berguna bagi Anda untuk kueri itu. Jadi pilih dari (QuestionID, MemberID) dan (MemberID, QuestionID) mana saja yang paling sesuai untuk bagaimana Anda akan menggunakan tabel.
Jika perlu, tambahkan indeks di sisi lain:
CREATE UNIQUE INDEX idx1 ON voting (MemberID, QuestionID);