🍽️ Câu chuyện “Bồi bàn hậu đậu” = lỗi N+1 Query

Cùng một câu chuyện nhìn theo 2 cách: nhà hàng (trên) & Database (dưới) — chạy đồng bộ.
← Màn MC
0lần gọi
Database
Bấm ▶ Chạy để xem bồi bàn phục vụ 6 khách — và Database phải gọi lại bao nhiêu lần.
🍽️ Nhà hàng
🍳 Bếp nhận báo món
— chưa có món nào —
🍽️Bàn 5
🧑‍🍳
📝
🛢️ Database (đúng bản chất)
🛢️
Database
📡➡️
#KháchBànMón (cột thiếu)
3 cột đầu lấy được trong 1 truy vấn danh sách; cột “Món” phải hỏi DB thêm 1 lần cho mỗi dòng.
TỔNG: 1 + 6 = 7 lần gọi Database cho 6 dòng — chính là lỗi N+1 Query!
✅ Cách đúng: dùng JOIN / eager loading — chỉ 1 truy vấn lấy đủ cả 6 dòng + cột “Món”.
Bước 1

Mỗi lần bồi bàn chạy vào bếp = 1 lần Database bị gọi lại. 6 khách → 6 lần chạy thêm, cộng 1 lần lấy danh sách = 7.