質問

次のLinqステートメントがあります:

(from order in Orders.AsEnumerable()
 join component in Components.AsEnumerable()
    on order.ORDER_ID equals component.ORDER_ID
 join detail in Detailss.AsEnumerable()
    on component.RESULT_ID equals detail.RESULT_ID
 where orderRestrict.ORDER_MNEMONIC == "MyOrderText"
 select new 
            {
                Mnemonic = detail.TEST_MNEMONIC,
                OrderID = component.ORDER_ID,
                SeqNumber = component.SEQ_NUM
            }).ToList()

これにより、次のクエリが出力されると予想されます。

select  *   
from    Orders ord (NoLock)   
        join Component comp (NoLock)
          on ord .ORDER_ID = comp.ORDER_ID
        join Details detail (NoLock)
          on comp.RESULT_TEST_NUM = detail .RESULT_TEST_NUM
where   res.ORDER_MNEMONIC = 'MyOrderText'

代わりに、テーブルからすべての行を選択する3つの個別のクエリを取得します。最終的に正しい値を取得するため、Linqが値をフィルタリングしていると推測しています。

問題は、3つのテーブルすべてからすべての行をプルダウンしているため、WAY WAYに時間がかかりすぎることです。

それを修正する方法はありますか?

役に立ちましたか?

解決

.AsEnumerable()sをクエリから削除すると、クエリ全体がサーバー上で評価されなくなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top