Lewati ke Konten Utama (Skip to Content)
Database Engineering2 Agustus 20265 menit baca

Strategi Optimasi Query PostgreSQL dan Indexing Praktis

Teknik membaca EXPLAIN ANALYZE, memilih jenis indeks yang tepat (B-Tree vs GIN), dan menghindari sequential scan yang tidak perlu.

Dalam aplikasi berskala tinggi, performa basis data sering kali menjadi penentu utama responsivitas sistem. Artikel ini membahas langkah konkret menganalisis query lambat pada PostgreSQL.

Membaca Output EXPLAIN ANALYZE

Jangan menebak bagian mana yang lambat. Gunakan EXPLAIN ANALYZE untuk melihat rencana eksekusi dan waktu riil tiap node operasi.

EXPLAIN (ANALYZE, BUFFERS)
SELECT id, action, created_at
FROM audit_logs
WHERE guild_id = '1234567890'
ORDER BY created_at DESC
LIMIT 20;

Perhatikan dua hal penting:

  1. Node Type: Jika muncul Seq Scan pada tabel dengan ratusan ribu baris, kemungkinan besar indeks yang sesuai belum dibuat.
  2. Execution Time vs Planning Time: Mengidentifikasi apakah kelambatan terjadi pada pembuatan query plan atau pembacaan disk.

Indexing Gabungan (Composite Index)

Untuk query yang memfilter satu kolom dan mengurutkan kolom lainnya, indeks multi-kolom (composite index) memberikan lompatan performa signifikan:

-- Membuat composite index terarah
CREATE INDEX idx_audit_logs_guild_created 
ON audit_logs (guild_id, created_at DESC);

Dengan indeks ini, PostgreSQL dapat langsung melompat ke subset guild_id tertentu dan mengambil 20 baris pertama tanpa perlu melakukan sort in-memory tambahan (Sort Method: quicksort).

AD

Adi Saputra

Backend & Automation Developer • Lampung, Indonesia