Ruang penulis
← Kembali ke jurnal
MySQL

Index gabungan di MySQL: urutan kolom itu penting

Pahami kenapa urutan kolom pada composite index memengaruhi query mana yang terbantu.

DTim Diary Coding · 28 Agt 2026 · 1 menit baca

Satu indeks untuk beberapa kolom

Composite index adalah indeks yang dibuat dari lebih dari satu kolom. MySQL menyusun indeks ini berdasarkan kolom pertama, lalu kolom kedua di dalam kelompok kolom pertama, dan seterusnya.

CREATE INDEX idx_pesanan_status_tanggal
    ON pesanan (status, dibuat_pada);

Aturan prefiks kiri

Indeks gabungan bisa dipakai untuk query yang menyaring berdasarkan prefiks kolom dari kiri.

-- Memakai indeks: menyaring status, lalu terurut oleh dibuat_pada
SELECT * FROM pesanan
WHERE status = 'selesai'
ORDER BY dibuat_pada DESC;

-- Tidak memakai indeks di atas secara efektif
SELECT * FROM pesanan
WHERE dibuat_pada > '2026-01-01';

Query kedua hanya menyaring berdasarkan dibuat_pada tanpa menyertakan status, sehingga tidak bisa memanfaatkan prefiks kiri dari indeks tersebut.

Menentukan urutan kolom

Umumnya, letakkan kolom dengan kesetaraan (=) di depan, dan kolom untuk rentang atau pengurutan (>, <, ORDER BY) di belakang. Kolom dengan jumlah nilai unik tinggi juga biasanya lebih efektif diletakkan lebih dulu.

Memeriksa indeks yang benar-benar dipakai

EXPLAIN SELECT * FROM pesanan
WHERE status = 'selesai'
ORDER BY dibuat_pada DESC;

Kolom key pada hasil EXPLAIN menunjukkan indeks yang benar-benar dipilih optimizer, sementara possible_keys hanya menunjukkan kandidat yang tersedia.

Latihan

Buat dua indeks dengan urutan kolom terbalik pada tabel yang sama, lalu bandingkan hasil EXPLAIN untuk dua query yang berbeda pola penyaringannya.

← Jelajahi catatan lainnya