LINQ クエリにおける Include() の役割を理解する
LINQ では、Include() はプリロードによるデータベース クエリの最適化において重要な役割を果たします。関連するエンティティをメモリに追加します。この強力なメソッドを使用すると、プライマリ オブジェクトに関連付けられたデータを積極的にロードできるため、必要なクエリの数が減り、パフォーマンスが向上します。
Include() の仕組み
次のサンプル コード:
var customers = context.Customers.ToList();
このコードは顧客のリストを取得します。ただし、各顧客に注文のコレクションがあり、各注文に品目のコレクションがある場合、これらすべての関連エンティティを取得するには複数の SELECT ステートメントが必要になります。
これを回避するには、Include() を使用して指定できます。最初のクエリにどの関連エンティティを含める必要があります:
var customersWithOrderDetails = context.Customers.Include("Orders").ToList();
このコードは、各 Customer オブジェクトの Orders プロパティを積極的に読み込み、データベースの数を減らします。 queries.
Include() の SQL への変換
Include() メソッドは SQL JOIN 操作に変換できます。たとえば、次の SQL ステートメント:
SELECT * FROM Customers JOIN Orders ON Customers.Id = Orders.CustomerId;
は、LINQ ステートメントと同等です:
var customersWithOrderDetails = context.Customers.Include("Orders").ToList();
パフォーマンス上の利点
関連エンティティを含む特に大規模なデータセットを操作する場合、単一のクエリでパフォーマンスを大幅に向上させることができます。 Include() はデータベースへの複数回のラウンドトリップを回避することで、複数のクエリの実行に伴うオーバーヘッドを排除します。
以上がLINQ の Include() メソッドはデータベース クエリをどのように最適化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。