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 · 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.