·
Admin
MySQL Query Optimizasyonu: N+1 Problemini Çözmek
N+1 query problemi, ORM kullanan her geliştiricinin en sık karşılaştığı performans sorunlarından biridir.
Problem Nedir?
Bir blog listesi düşünün. Her post'un yazarını göstermek istiyorsunuz:
$posts = Post::all(); // 1 query
foreach ($posts as $post) {
echo $post->author->name; // N query (her post için 1)
}
100 post varsa = 101 query! Bu bir felaket.
Çözüm: Eager Loading
$posts = Post::with('author')->get(); // Sadece 2 query!
// Nested eager loading
$posts = Post::with(['author', 'categories', 'tags'])->get();
Tespit Araçları
- Laravel Debugbar: Query sayısını ve süresini gösterir
- preventLazyLoading(): N+1 olduğunda exception fırlatır
- Telescope: Tüm query'leri loglar