주 엔터티 customer
과 관련 엔터티 (주문)에 대한 쿼리를 모두 컴파일했습니다.성능 - 탐색 속성 대 컴파일 된 쿼리를 통해 데이터 가져 오기
var customer = MyService.GetCustomer<Customer>().where(c => c.Id == fooId).ToList();
var customerOrders = MyService.GetOrders<Order>().where(o => o.CustomerId == fooId && o.IsActive).ToList();
하지만 내가 대신 컴파일 된 쿼리의 탐색 속성을 통해 모든 주문을받을 수 있다고 생각은 customer
부터 이미 아래의 코드에 의해 메모리에로드되는 호출 :
var customerOrders = customer.Orders.where(o => o.IsActive).ToList(); // I didn't do filter further more
을하지만 타이밍을 측정 할 때 나는 나오지 않았어 (DB에는 500 명의 고객과 4000 개의 주문이 있고 모든 특정 고객에는 30 개의 활성 주문과 약 400 개의 비활성 주문이 있습니다.)
어느 쪽이 더 나은 성능을 낼 수 있습니까?
나는 완전히 엔티티이 related question
이 경우 탐색 속성 쿼리가 준수 쿼리보다 낫습니다. – ManirajSS
나는 컴파일 된 쿼리가 의미하는 것을 완전히 얻지 못한다. Linq to Entities는 적은 양의 지원 기능 만 제공합니다. 이 값을 초과하면 데이터베이스에서 더 많은 양의 데이터를 가져와야하며 전체 데이터로 계산 및 가능한 감소를 수행하면 성능이 저하됩니다. 여기를보십시오 https://msdn.microsoft.com/en-us/library/bb738550.aspx –
예를 들어 Regex를 사용하여 데이터를 필터링하는 경우 (예 : .ToList() 또는 .AsEnumerable()) 호출해야하는 경우) SQL 문을 데이터베이스로 보내고 결과 집합을 개체에 매핑합니다. 그럼 당신은 Linq 개체를 사용하여 Regex 기반 필터링을 할 수 –