Database Indexing: Kenapa Query Lambat dan Cara Mempercepatinya

Query database yang lambat sering bukan salah kode aplikasinya — tapi kurang atau salah index. Pelajari cara kerja index dan kapan menggunakannya.
Database Indexing: Kenapa Query Lambat dan Cara Mempercepatinya

Kenapa Query Bisa Sangat Lambat?

Tanpa index, database harus membaca setiap baris dalam tabel untuk menemukan data yang dicari (disebut full table scan). Untuk tabel dengan jutaan baris, ini bisa memakan waktu beberapa detik — bahkan menit.

Apa Itu Index Database?

Index adalah struktur data terpisah (biasanya B-Tree) yang menyimpan nilai kolom tertentu beserta pointer ke baris aslinya — mirip indeks di belakang buku. Database bisa mencari index jauh lebih cepat daripada scan seluruh tabel.

Membuat Index di MySQL/PostgreSQL

-- Index single kolom
CREATE INDEX idx_users_email ON users (email);

-- Index komposit (urutan kolom penting!)
CREATE INDEX idx_posts_status_created ON blog_posts (status, created_at);

-- Lihat index yang ada
SHOW INDEX FROM blog_posts;        -- MySQL
d blog_posts                       -- PostgreSQL

Cara Analisis Query dengan EXPLAIN

EXPLAIN SELECT * FROM blog_posts
WHERE status = "published"
AND created_at > "2025-01-01"
ORDER BY created_at DESC;

Perhatikan kolom type: ALL berarti full scan (buruk), ref atau range berarti index digunakan (bagus).

Aturan Index Komposit: Leftmost Prefix

Index (status, created_at) dapat digunakan oleh query yang filter status saja, atau status + created_at bersama — tapi TIDAK untuk created_at saja.

Kapan JANGAN Buat Index

  • Kolom yang jarang dipakai di WHERE, JOIN, atau ORDER BY.
  • Tabel kecil (di bawah beberapa ribu baris) — full scan sudah cukup cepat.
  • Kolom yang sering diupdate — setiap UPDATE juga harus memperbarui index, yang menambah overhead write.

Kesimpulan

Index yang tepat bisa mengubah query 5 detik menjadi 10 milidetik. Gunakan EXPLAIN untuk mengidentifikasi masalah, buat index pada kolom yang sering difilter, dan monitor ukuran index agar tidak berlebihan.

Butuh Solusi Digital Custom?

Kami siap membuatkan solusi digital sesuai kebutuhan bisnis Anda.

Konsultasi Gratis