Apa itu EXPLAIN?
EXPLAIN menunjukkan bagaimana database akan mengeksekusi query — disebut query plan. Ini adalah tool utama untuk memahami dan mengoptimasi performa query.
Cara Menggunakan EXPLAIN
-- EXPLAIN dasar: menunjukkan rencana eksekusi
EXPLAIN SELECT * FROM users WHERE email = '[email protected]';
-- EXPLAIN ANALYZE: menjalankan query dan menunjukkan waktu aktual
EXPLAIN ANALYZE SELECT * FROM users WHERE email = '[email protected]';
Membaca Query Plan
-- Tanpa index
EXPLAIN ANALYZE SELECT * FROM users WHERE email = '[email protected]';
-- Seq Scan on users (cost=0.00..35.50 rows=1 width=540)
-- Filter: (email = '[email protected]')
-- Actual time: 0.523..0.530 rows=1 loops=1
-- Dengan index
CREATE INDEX idx_users_email ON users(email);
EXPLAIN ANALYZE SELECT * FROM users WHERE email = '[email protected]';
-- Index Scan using idx_users_email (cost=0.29..8.30 rows=1 width=540)
-- Index Cond: (email = '[email protected]')
-- Actual time: 0.025..0.026 rows=1 loops=1
Jenis Scan yang Umum
- Seq Scan — full table scan, baca semua baris (lambat untuk tabel besar)
- Index Scan — menggunakan index untuk menemukan baris (cepat)
- Index Only Scan — data diambil langsung dari index tanpa akses tabel (tercepat)
- Bitmap Index Scan — gabungkan beberapa index, lalu akses tabel
Metrik yang Perlu Diperhatikan
- cost — estimasi biaya (semakin kecil semakin baik)
- rows — estimasi vs aktual jumlah baris
- Actual time — waktu eksekusi real dalam milidetik
- loops — berapa kali operasi dijalankan