문제

다음 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가 결국 올바른 값을 얻기 때문에 LINQ가 값을 필터링하고 있다고 생각합니다.

문제는 세 테이블 모두에서 모든 행을 끌어 내기 때문에 너무 오래 걸린다는 것입니다.

내가 어떻게 고칠 수 있는지 아이디어가 있습니까?

도움이 되었습니까?

해결책

쿼리에서 .aseNumerable ()을 제거하여 서버에서 전체 쿼리가 평가되는 것을 방지합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top