データアクセス
ルール 03 は基本です。N+1 を禁止、ホットパスでの SELECT * を禁止、クエリはインデックスを利用、大量リストはページネーション。このスキルは、ORM やループがラウンドトリップを隠してしまうときに、そのルールがどのように破られるかを扱います。
コレクションから関連をロードする前、マッピングを eager に設定する前、または one-to-many をページングされたリストに結合する前に、references/bad-vs-good.md を読んでください。
完了条件
- N 件の親のリストに対して、同じ関連に対して N 回のクエリが発行されない。
- クエリログまたはトレースが、1行につき1回ではなく、固定された回数(1回または2回、または 1 + N/バッチ)のステートメントを示している。
- 親のページが、結合行のページではなく、要求した数の親を返す。