Index Strategy — Database

Strategi Index yang Efektif Membuat index bukan asal-asalan. Strategi yang tepat bisa meningkatkan performa secara drastis, sementara index yang salah justru me

Strategi Index yang Efektif

Membuat index bukan asal-asalan. Strategi yang tepat bisa meningkatkan performa secara drastis, sementara index yang salah justru memperlambat database.

Composite Index Order Matters

Urutan kolom dalam composite index sangat penting. Index (a, b, c) bisa digunakan untuk query pada a, a,b, atau a,b,c — tapi TIDAK untuk b saja atau c saja.

-- Index: (user_id, created_at, status)
CREATE INDEX idx_orders_composite ON orders(user_id, created_at, status);

-- ✅ Bisa menggunakan index:
WHERE user_id = 1
WHERE user_id = 1 AND created_at > '2024-01-01'
WHERE user_id = 1 AND created_at > '2024-01-01' AND status = 'paid'

-- ❌ Tidak bisa menggunakan index:
WHERE created_at > '2024-01-01'         -- skip kolom pertama
WHERE status = 'paid'                   -- skip kolom pertama & kedua

Covering Index

Index yang mencakup semua kolom yang dibutuhkan query, sehingga database tidak perlu akses tabel sama sekali (Index Only Scan).

-- Query yang sering dijalankan:
SELECT user_id, created_at, total FROM orders WHERE user_id = 1;

-- Covering index:
CREATE INDEX idx_orders_covering ON orders(user_id, created_at, total);
-- Semua data yang dibutuhkan ada di index

Partial Index

-- Hanya index data yang relevan
CREATE INDEX idx_active_orders ON orders(user_id)
WHERE status = 'active';
-- Lebih kecil dan lebih cepat daripada full index

Anti-patterns

Yang akan kamu pelajari