LINQ To Entities で問題が発生しています。
LINQ クエリを実行すると、実行プランで並列処理 (Gather Streams と Reparation Stream)が使用され、多くの CXPACKET 待機が発生します。
しかし、LINQ で変換されたクエリ (ToTraceString 関数を介して取得したもの) を SQL サーバーに直接実行すると、実行プランには並列処理が含まれません。
LINQ を介して実行する場合と SQL クエリ自体を実行する場合の SQL の並列処理に関して違いがあるのはなぜですか?
どうすればこの問題を克服できますか? SQL を直接実行した場合と同じ方法で LINQ クエリを実行したいと考えています。
実行計画の例:
LINQを使用:
SQL を直接:
SQL クエリを公開できますが、ここでは役に立たないと思います...