Laravel

Performance Optimization

クエリの最適化、N+1問題、eager loading、lazy loading、キャッシュ戦略、データベースのインデックス作成、プロファイリングツール

22 面接問題·
Senior
1

LaravelにおけるN+1問題とは何ですか?

回答

N+1問題は、Eloquentがコレクションを取得するために1つのクエリを実行し、その後リレーションを読み込むために要素ごとに追加のクエリを実行するときに発生します。これによりデータベースアクセスが増大し、大量のデータでパフォーマンスが大幅に低下します。with()によるeager loadingを使用すると、N個のクエリの代わりに1つの追加クエリですべてのリレーションを読み込めます。

2

リレーションを読み込む際にN+1問題を解決するにはどのメソッドを使うべきですか?

回答

with()メソッドはeager loadingを実行し、リレーションを1つの追加クエリで読み込みます。リレーションにアクセスする際にモデルごとにクエリを実行するのではなく、すべてのリレーションを事前に読み込みます。これによりSQLクエリの数が大幅に減り、パフォーマンスが向上します。

3

eager loadingとlazy loadingの違いは何ですか?

回答

eager loadingはwith()を使ってメインクエリと同時にリレーションをすぐに読み込みますが、lazy loadingは最初のアクセス時にオンデマンドでリレーションを読み込みます。lazy loadingはループ内でリレーションにアクセスするとN+1問題を引き起こす可能性があります。リレーションを使用する場合、複数のクエリを避けるためにeager loadingが推奨されます。

4

LaravelにおけるCache::remember()の役割は何ですか?

5

Cache::remember()とCache::rememberForever()の違いは何ですか?

+19 面接問題

次の面接に向けてLaravelをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める