// PHP
public function show()
{
return 'Tối ưu hóa Query trong Laravel: Từ cơ bả...';
}
Vấn đề N+1 Query
N+1 query là một vấn đề phổ biến khi bạn fetch một collection và sau đó loop qua từng item để lấy dữ liệu liên quan.
Ví dụ vấn đề:
$posts = Post::all();
foreach ($posts as $post) {
echo $post->user->name; // Query được thực hiện cho mỗi post
}Giải pháp với Eager Loading:
$posts = Post::with('user')->get();
foreach ($posts as $post) {
echo $post->user->name; // Chỉ 2 queries được thực hiện
}Lazy Eager Loading
Đôi khi bạn không biết trước cần load relationship nào. Lazy eager loading giúp bạn load relationships sau khi đã có collection:
$posts = Post::all();
$posts->load('user', 'category');Sử dụng select() để giảm dữ liệu
Chỉ select những cột bạn thực sự cần:
User::select('id', 'name', 'email')->get();Kết luận
Tối ưu hóa query là một kỹ năng quan trọng để xây dựng ứng dụng Laravel hiệu quả. Luôn nhớ sử dụng eager loading và chỉ select những gì bạn cần.
Bình luận đã bị tắt cho bài viết này.