Panduan Perintah EXPLAIN MySQL: Optimasi Query dan Index

Memahami Perintah EXPLAIN dalam MySQL

Perintah EXPLAIN dalam MySQL adalah alat diagnostik utama untuk memahami bagaimana mesin database mengeksekusi sebuah query. Dengan menambahkan kata kunci EXPLAIN sebelum pernyataan SELECT, Anda akan mendapatkan informasi mendalam mengenai urutan eksekusi, tipe join, serta apakah query tersebut memanfaatkan index yang telah dibuat atau justru melakukan full table scan yang membebani performa.

Cara Menggunakan EXPLAIN

Untuk menggunakannya, cukup tambahkan perintah di depan query Anda:

EXPLAIN SELECT * FROM nama_tabel WHERE kolom_id = 100;

Hasil dari perintah ini akan menampilkan tabel dengan kolom-kolom krusial yang menentukan efisiensi eksekusi. Berikut adalah tabel panduan kolom utama yang dihasilkan oleh EXPLAIN:

KolomDeskripsi
idUrutan identifier dari SELECT dalam query.
select_typeTipe dari SELECT (SIMPLE, PRIMARY, SUBQUERY, dll).
tableTabel yang sedang diakses.
typeTipe join (const, eq_ref, ref, range, index, ALL).
possible_keysIndex yang mungkin digunakan MySQL untuk menemukan baris.
keyIndex yang benar-benar dipilih oleh MySQL.
rowsEstimasi jumlah baris yang harus diperiksa.
ExtraInformasi tambahan (Using index, Using where, Using filesort).

Analisis Efektivitas Index

Tujuan utama penggunaan EXPLAIN adalah memastikan kolom key terisi dengan nama index yang tepat dan kolom type tidak bernilai ALL. Jika type bernilai ALL, artinya MySQL melakukan full table scan, yang merupakan indikasi bahwa index tidak ada atau tidak digunakan secara efektif.

Tips Optimasi

  • Periksa possible_keys: Jika kolom ini kosong, berarti tidak ada index yang relevan untuk query tersebut.
  • Perhatikan Extra: Jika muncul Using filesort atau Using temporary, query Anda mungkin memerlukan optimasi lebih lanjut pada index agar pengurutan data dilakukan langsung melalui index.
  • Gunakan EXPLAIN ANALYZE: Untuk MySQL 8.0 ke atas, gunakan EXPLAIN ANALYZE untuk mendapatkan data eksekusi yang lebih akurat berdasarkan waktu nyata.

Penting untuk diingat bahwa penggunaan kata kunci dalam MySQL harus memperhatikan daftar kata yang dilindungi (reserved words) agar tidak terjadi konflik sintaksis saat pembuatan tabel atau penamaan kolom, sebagaimana diatur dalam manual referensi MySQL 8.0.