Bagaimana INDEX pada Key Primer Komposit di mysql?

12

Saat membuat kunci primer komposit untuk dua atau lebih kolom, misalnya PRIMARY KEY(col1, col2, col3); Apakah sistem akan INDEXsetiap kolom secara individual?

Alasan saya mengajukan pertanyaan ini adalah ketika kami menggunakan UNIQUE INDEX (col1, col2, col3), ia hanya berfungsi INDEXuntuk kolom pertama, dan kami perlu membuat tambahan INDEXuntuk kolom lainnya. Saya ingin tahu apakah itu yang terjadi untuk Kunci Utama Komposit juga.

Googlebot
sumber

Jawaban:

16
  1. Indeks primer komposit akan selalu memastikan bahwa kombinasi nilai col1, col2, col3 adalah unik. Jika tujuan dari indeks adalah untuk memastikan bahwa nilainya unik maka Anda akan mencapai itu

  2. Indeks komposit juga menyediakan pencocokan indeks pada setiap kombinasi kolom col1, col2, dan col3

  3. Anda akan membuat indeks terpisah pada col2, dan col3, jika Anda bergabung atau memfilter menggunakan salah satu kolom tanpa yang lain.

  4. Saya selalu lebih suka kunci primer numerik (tanpa asosiasi bisnis), dan indeks unik daripada kunci primer komposit jika perlu.

Stephen Senkomago Musoke
sumber
1
poin bagus! kemudian, kunci primer komposit mirip dengan UNIK INDEKS, dan kami tidak memiliki indeks untuk kolom ke-2, ke-3, ... untuk mengambil baris dengan cepat?
Googlebot
1
@ssmusoke Dapatkah saya menganggap dari kelalaian col1dalam poin 3 bahwa SELECT * WHERE col1 = 10akan lebih efisien?
Andy
2
@Andy # 3 adalah tambahan untuk indeks komposit col1, col2, dan col3 sehingga indeks komposit akan digunakan. Namun jika Anda melakukan filter pada col2, dan col3 tanpa col1 maka Anda perlu indeks terpisah untuk masing-masing saja
Stephen Senkomago Musoke
3
Memiliki indeks pada col1, col2, dan col3 berarti bahwa SELECT * FROM col1 = 10 akan efisien, karena col1 adalah kolom pertama dalam indeks, jadi # 3 memungkinkan Anda untuk melakukan hal yang sama untuk col2 dan col3, sehingga jika Anda filter oleh kolom-kolom itu sendiri tanpa col1 maka kolom juga diindeks
Stephen Senkomago Musoke
2
@ PaulWasilewski ya memang ada kasus khusus di mana kunci primer komposit masuk akal, tetapi itu hanya kasus khusus.
Stephen Senkomago Musoke