Vấn đề N+1 xảy ra khi lấy records cha rồi truy cập relationship trên từng cái.
Ví dụ: $users = User::all(); (1 query), sau đó foreach($users as $user) { echo $user->posts; } (N query thêm). Kết quả: 1+N query tổng cộng rất kém hiệu quả. Khắc phục bằng eager loading: User::with("posts")->get() tải tất cả user và post chỉ trong 2 query. Chain: User::with("posts.comments")->get(). Dùng load() để lazy eager loading: $users->load("posts"). Kiểm tra bằng debugbar để xác nhận số lượng query. Eager loading rất quan trọng cho hiệu suất.
N+1 problem happens when fetching parent records, then accessing relationship on each one.
Example: $users = User::all(); (1 query), then foreach($users as $user) { echo $user->posts; } (N additional queries). Result: 1 + N queries total is inefficient. Fix with eager loading: User::with("posts")->get() loads all users AND their posts in just 2 queries. Also with() chaining: User::with("posts.comments")->get(). Use load() for lazy loading: $users->load("posts"). Check with debugbar to verify query count. Eager loading critical for performance.