Index adalah perbedaan antara query 5 milidetik dan 5 menit. Section ini membongkok cara MySQL memakai index, pola query yang membuat index terabaikan, dan trade-off penulisan yang lebih lambat akibat index.

# Konsep INDEX

Pahami index MySQL sebagai struktur data terpisah yang mempercepat pencarian baris: analogi indeks buku beserta batasnya, konsep B-tree terurut, hubungan index dengan baris data, dan trade-off antara kecepatan baca dan biaya tulis.

Buka →
# Membuat dan Menghapus INDEX

Kuasai perintah DDL untuk mengelola index di MySQL: CREATE INDEX pada tabel yang sudah ada, deklarasi KEY dan INDEX langsung di CREATE TABLE, DROP INDEX, membaca keluaran SHOW INDEX kolom per kolom, konvensi penamaan idx_kolom, serta index yang otomatis dibuat oleh PRIMARY KEY, UNIQUE, dan FOREIGN KEY.

Buka →
# UNIQUE INDEX

Bedah CREATE UNIQUE INDEX di MySQL: menolak duplikat sekaligus mempercepat lookup, error 1062 saat data kembar masuk atau sudah ada, perilaku NULL yang tetap boleh ganda pada kolom unik, perbandingan dengan PRIMARY KEY, dan unique index gabungan multi kolom.

Buka →
# COMPOSITE INDEX

Bedah composite index multi kolom di MySQL: membuat index (nama_depan, nama_belakang), aturan leftmost prefix yang membuat kolom kedua tak terpakai sendirian, bukti EXPLAIN key NULL versus index terpakai, perbandingan index gabungan dengan dua index terpisah, dan aturan memilih urutan kolom.

Buka →
# INDEX Prefix

Pelajari index prefix MySQL untuk kolom VARCHAR panjang: membuat INDEX (email(10)), membaca kolom Sub_part pada SHOW INDEX, hemat ruang dibanding index kolom penuh, serta batasannya pada covering index dan ORDER BY.

Buka →
# INDEX pada FOREIGN KEY

Buktikan index otomatis pada kolom FOREIGN KEY InnoDB: dibuat sendiri saat tabel anak lahir, dipakai untuk join dan pemeriksaan penghapusan parent, di-reuse bila index sudah ada, dan dilindungi dari DROP INDEX lewat error 1553.

Buka →
# Cara MySQL Menggunakan INDEX

Baca rencana eksekusi EXPLAIN untuk memahami kapan MySQL memakai index: equality lookup bertipe ref dan const, range scan untuk BETWEEN, pembanding lebih besar, dan LIKE berawalan, index yang melayani ORDER BY tanpa filesort, hingga GROUP BY yang berjalan lewat index terurut.

Buka →
# INDEX yang Tidak Efektif

Kenali pola query yang mematikan index di MySQL: fungsi pada kolom seperti YEAR(tanggal) = 2026 dengan solusi range tanggal, wildcard awalan LIKE '%x', konversi tipe implisit saat kolom VARCHAR dicari angka, OR antar kolom berbeda index, serta perilaku operator != dan NULL.

Buka →
# Biaya Pemeliharaan INDEX

Hitung biaya memiliki index di MySQL: setiap INSERT, UPDATE, dan DELETE ikut memelihara seluruh index tabel, update kolom terindeks paling mahal, audit index tak terpakai dengan SHOW INDEX, uji coba aman lewat invisible index, dan aturan praktis menentukan index mana yang layak dipertahankan.

Buka →