Indeks database: cara mempercepat query tanpa menebak-nebak
Indeks database mempercepat pencarian dengan menyimpan struktur terurut atas kolom tertentu sehingga database tidak perlu membaca seluruh tabel. Buat indeks pada kolom yang sering dipakai di WHERE, JOIN, dan ORDER BY. Namun setiap indeks memperlambat penulisan, jadi jangan membuat sembarangan.
Bagaimana indeks mempercepat query?
Tanpa indeks, database melakukan pemindaian penuh tabel (full table scan), yaitu membaca setiap baris. Dengan indeks, ia melompat langsung ke baris yang cocok, seperti memakai daftar isi pada buku.
Jenis yang paling umum adalah B-tree, yang cocok untuk pencarian kesamaan maupun rentang nilai. Tabel dengan jutaan baris bisa turun dari hitungan detik menjadi milidetik berkat indeks yang tepat.
Kunci utama pada tabel biasanya sudah otomatis berindeks. Yang sering terlewat adalah kolom lain seperti surel pengguna, tanggal pesanan, atau kunci asing, padahal kolom itulah yang paling sering dicari dan digabungkan.
Kapan membuat indeks?
- Kolom yang sering muncul di klausa WHERE.
- Kolom kunci asing yang dipakai untuk JOIN.
- Kolom yang dipakai untuk pengurutan pada daftar besar.
- Indeks gabungan ketika beberapa kolom selalu dipakai bersama, dengan urutan kolom mengikuti pola kueri.
Ukur sebelum dan sesudah
Gunakan EXPLAIN atau EXPLAIN ANALYZE untuk melihat rencana eksekusi. Pastikan indeks yang baru benar-benar dipakai.
Kapan indeks justru merugikan?
Setiap INSERT, UPDATE, dan DELETE harus ikut memperbarui indeks, sehingga terlalu banyak indeks memperlambat penulisan dan memakan ruang penyimpanan.
- Kolom dengan sedikit variasi nilai, misalnya status ya atau tidak, jarang bermanfaat.
- Tabel kecil umumnya cepat tanpa indeks.
- Indeks yang tidak pernah dipakai sebaiknya dihapus.
- Tabel dengan penulisan sangat tinggi perlu dihitung ulang manfaatnya.
Ringkasan dan langkah berikutnya
Mulailah dari query paling lambat yang tercatat di log, analisis rencana eksekusinya, lalu tambahkan satu indeks dan ukur ulang.
- Jenis indeks umum: B-tree.
- Alat analisis: EXPLAIN ANALYZE pada PostgreSQL atau EXPLAIN pada MySQL.
- Aturan praktis: indeks pada kolom WHERE, JOIN, dan ORDER BY.
- Rujukan: dokumentasi resmi PostgreSQL di postgresql.org/docs.
Topik terkait yang bisa Anda baca berikutnya: performa aplikasi saat data membesar, merancang database yang tahan lama, masalah N+1 query, dan migrasi database tanpa downtime.
Kesalahan yang perlu dihindari
Kesalahan umum adalah membuat indeks pada setiap kolom, atau membungkus kolom ber-indeks dengan fungsi di klausa WHERE sehingga indeks tidak terpakai. Hindari pula menambah indeks di produksi tanpa mengujinya pada salinan data yang ukurannya mirip.
Pertanyaan singkat seputar topik ini
Kolom mana yang sebaiknya diberi indeks?
Kolom yang sering muncul di WHERE, JOIN, dan ORDER BY pada query yang berjalan lambat. Buktikan manfaatnya dengan EXPLAIN sebelum dan sesudah.
Apakah indeks selalu mempercepat?
Tidak. Indeks memperlambat penulisan dan menambah ruang penyimpanan, dan kurang berguna pada kolom dengan sedikit variasi nilai.
Pertanyaan yang sering muncul
Ya, tanpa komitmen. Kami balas dalam 1×24 jam kerja.
Tentang Tim AnabisolutionsStudio digital dari Pekanbaru yang mengerjakan website, aplikasi, dan sistem untuk klien di Riau dan sekitarnya.
Anabisolutions

