Index mempercepat pencarian data — seperti indeks di buku yang membantu menemukan halaman tanpa membaca semua.
Membuat index:
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_orders_user_date ON orders(user_id, created_at);
Tanpa index: database harus scan SEMUA baris (full table scan) Dengan index: database langsung lompat ke baris yang dicari
EXPLAIN QUERY PLAN — lihat cara database eksekusi query:
EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = '[email protected]';
Kapan pakai index?
- ✅ Kolom yang sering dipakai di WHERE
- ✅ Kolom yang sering dipakai di JOIN (foreign key)
- ✅ Kolom yang sering dipakai di ORDER BY
- ❌ Kolom yang jarang di-query
- ❌ Tabel yang sangat kecil (<1000 baris)
Trade-off:
- Index mempercepat READ tapi memperlambat WRITE (INSERT/UPDATE/DELETE)
- Setiap index memakan ruang penyimpanan
- Jangan index semua kolom — hanya yang sering di-query