Single Intermediate 14 Maret 2024 6 min

PostgreSQL Indexing Tips

Quick tips for optimizing PostgreSQL database performance with proper indexing

PostgreSQL Indexing Tips

Indexing adalah cara tercepat untuk meningkatkan performance query PostgreSQL.

When to Use Index

Index cocok untuk:

  • Columns yang sering digunakan di WHERE clause
  • Columns yang sering di JOIN
  • Columns yang sering di ORDER BY

Basic Index

CREATE INDEX idx_users_email ON users(email);

Composite Index

Untuk multiple columns:

CREATE INDEX idx_orders_user_date 
ON orders(user_id, created_at);

Partial Index

Index subset dari data:

CREATE INDEX idx_active_users 
ON users(email) 
WHERE status = 'active';

Covering Index

Index yang mencakup semua columns yang dibutuhkan:

CREATE INDEX idx_orders_covering 
ON orders(user_id, created_at) 
INCLUDE (total, status);

Check Index Usage

-- Check index usage
SELECT 
    schemaname,
    tablename,
    indexname,
    idx_scan,
    idx_tup_read
FROM pg_stat_user_indexes
ORDER BY idx_scan DESC;

When NOT to Use Index

  • Tables dengan sedikit data
  • Columns yang sering di-update
  • Columns dengan cardinality rendah (boolean, gender)

Tips

  1. Jangan terlalu banyak index (overhead pada write)
  2. Hapus index yang tidak digunakan
  3. Gunakan EXPLAIN ANALYZE untuk cek query plan