N+1 クエリとは?
N+1 クエリは、N 件のアイテムのコレクションを読み込むために1つのクエリを実行し、その後、関連データを取得するために各アイテムごとに追加のクエリを実行して、合計 N+1 件のクエリになるときに発生します。通常はループ内の遅延読み込みから生じます。修正方法は、先読み込みか、すべてを1つのクエリで集める join です。
なぜ重要か
N+1 のパターンは、データが少ない開発環境では問題なく見えますが、クエリ数が結果セットとともに増えるため、規模が大きくなると急激に性能が低下します。早期に見つけることで、遅いページやデータベースの過負荷を防げます。
関連ガイド
What Is Eager Loading?Eager loading fetches related data upfront in a single combined query, so associations are already available…
What Is Lazy Loading in Data Access?Lazy loading defers fetching related data until it is actually accessed, avoiding upfront queries for associa…
What Is a Database Index?A database index is an auxiliary data structure that lets the engine find rows matching a query quickly, avoi…