2

遅い linq クエリがいくつかあり、それらを最適化する必要があります。コンパイルされたクエリについて読み、読み取り専用操作で NoTracking のマージ オプションを設定しました。しかし、私の問題は、インクルードが多すぎるため、DB で行われる結合の数が膨大になることだと思います。

context.ExampleEntity
      .Include("A")
      .Include("B")
      .Include("D.E.F")
      .Include("G.H")
      .Include("I.J")
      .Include("K.M")
      .Include("K.N")
      .Include("O.P")
      .Include("Q.R")
      .Where(a => condition1 || complexCondition2)

私の疑問は、Includes の前に Where を配置した場合、これはすべての結合を行う前に ExampleEntity オブジェクトをフィルタリングするのでしょうか?? linq クエリがどのように SQL に変換されるのかわかりません

4

1 に答える 1

0

"はい"。各サブクエリは、その結果を次のサブクエリに渡します。最初のものを移動するWhereとフィルター処理が行われ、次に潜在的に小さいセットに対してインクルードが実行されます。

それが特定のクエリのコンテキストで意味があるかどうかは、あなた次第です。

于 2012-08-02T16:52:41.280 に答える