나는 다음과 같은 쿼리가 :OrderBy는 어떻게 적용됩니까?
이var vendors = (from pp in this.ProductPricings
join pic in this.ProductItemCompanies
on pp.CompanyId equals pic.CompanyId into left
from pic in left.DefaultIfEmpty()
orderby pp.EffectiveDate descending
group pp by new { pp.Company, SortOrder = (pic != null) ? pic.SortOrder : short.MinValue } into v
select v).OrderBy(z => z.Key.SortOrder);
사람이 마지막 OrderBy()
이 적용되는 방법을 알고 있나요을? 그것들은 SQL 질의의 일부가 되었습니까, 아니면 모든 결과가 메모리에로드 된 다음 OrderBy()
으로 전달 되었습니까?
두 번째 경우 모두 하나의 쿼리로 만들 수있는 방법이 있습니까? 첫 번째 항목 만 있으면되며 모든 결과를 반환하는 것은 매우 비효율적입니다. 당신은 여전히 IQueryable
을 사용하고 있기 때문에
EFProfiler와 같은 도구를 보면 생성 된 쿼리의 모양을 알 수 있습니다. 당신은 열거하지 않기 때문에, 내 이해는 순서에 의해 생성 된 SQL 문의 일부가 될 것입니다. – Hammerstein
생성 된 SQL이 무슨 일이 일어나는지 알려줄 것입니다. http://stackoverflow.com/questions/1412863/how-do-i-view-the-sql-generated-by-theent-framework – mxmissile
DBMS는 당신이 피하려고하는 것을 잘 할 수 있습니다. 즉, 모든 결과를 반환하십시오. 그들을 주문하십시오. 쿼리가 충분히 복잡하면 SQL Server는 쿼리를 다중 스레드하고 [이 기사] (http://blogs.msdn.com/b/conor_cunningham_msft/)에 따라 반환하기 전에 전체 결과 집합을 다시 정렬해야합니다. archive/2008/08/27/no-seatbelt-order-by-order-by-order-by.aspx) – barrick