Query Execution & EXPLAIN

Ba mô-đun tương tác: (1) optimizer chọn scan vs index theo selectivity, (2) ba join algorithm, (3) EXPLAIN viewer.

1 · Optimizer: Quét toàn bảng vs Index

Mô hình: bảng 1.000.000 dòng, P = 10.000 trang. cost_seq = P × 1 = 10.000 (cố định). cost_idx = số_dòng_khớp × random_page_cost. Kéo thanh trượt để đổi % dòng khớp (selectivity) — optimizer chọn cái rẻ hơn.

2,00%
4,0 (SSD ≈ 1,1 · HDD ≈ 4,0)
Seq Scan (quét toàn bảng)
Index Scan

2 · Ba thuật toán Join

Nối bảng nhỏ L (left, 4 dòng) với R (right, 6 dòng) trên L.rid = R.id. Chọn thuật toán rồi bấm Chạy để xem cách hoạt động và đếm số phép so sánh.

🔁 Nested Loop 🗂️ Hash Join 🔀 Merge Join

L (outer) —

R (inner) —

Kết quả nối

3 · EXPLAIN viewer — cây plan

Plan cho SELECT o.id, c.name FROM orders o JOIN customers c ON c.id=o.customer_id WHERE c.city='Hanoi'. Bấm vào từng node để xem giải thích cost/rows. (Đọc cây từ trong/dưới ra ngoài/trên.)

← Bấm một node để xem chi tiết.