EXPLAIN cho biết kế hoạch thực thi (execution plan) DB chọn: cách quét bảng, thứ tự join, ước lượng chi phí/số hàng. EXPLAIN ANALYZE chạy thật và trả thời gian + số hàng thực tế.
Đọc plan để tìm điểm nghẽn:
- Seq Scan (quét toàn bảng) trên bảng lớn → cân nhắc thêm index cho cột trong WHERE/JOIN.
- Ước lượng lệch xa thực tế → chạy ANALYZE để cập nhật statistics.
- Nested Loop join trên tập lớn → thường thiếu index.
Các bước tối ưu hay dùng: thêm index phù hợp, chỉ SELECT cột cần, tránh bọc cột index trong hàm (làm mất khả năng dùng index), thêm LIMIT, và xử lý N+1 bằng batch/join. Luôn đo trước–sau bằng EXPLAIN ANALYZE, đừng đoán.