Trung BìnhLaravel iconLaravel

Vấn đề N+1 query là gì và cách khắc phục trong Laravel?

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.

Xem toàn bộ Laravel cùng filter theo level & chủ đề con.

Mở danh sách Laravel