EXPLAIN cho xem kế hoạch thực thi mà planner chọn cho một truy vấn; EXPLAIN ANALYZE còn chạy thật và báo thời gian + số hàng thực tế (cẩn thận với UPDATE/DELETE trên production — nó thực sự ghi). cost chỉ là ước lượng tương đối, không phải mili-giây; actual time mới là thời gian thật.
Đọc plan (từ trong ra ngoài, node lá chạy trước):
- Loại truy cập: Seq Scan (quét toàn bảng), Index Scan, Index Only Scan, Bitmap Heap Scan.
- Kiểu join: Nested Loop, Hash Join, Merge Join.
- Chi phí: cost=start..total (ước lượng), rows (ước lượng số hàng), và với ANALYZE là actual time + rows.
Dấu hiệu cần tối ưu:
- Seq Scan trên bảng lớn khi đáng lẽ nên dùng index.
- Lệch lớn giữa rows ước lượng và thực tế → thống kê cũ, cần ANALYZE.
- Sort/hash tràn ra đĩa (external merge Disk).
Dùng EXPLAIN là bước đầu tiên khi chẩn đoán truy vấn chậm.