우리는 우리의 응용 프로그램에서 데이터 끌어 오기 중 하나를 사용하여 성능 악몽을 겪었습니다. 상황이 발생하는 것은 고객의 대규모 목록이있는 지역 기반 쿼리의 경우이며 고객이 볼 때 해당 지역의 고객 만 볼 수 있어야합니다. 현재 테이블 (설명의 편의를 위해 다운 컷) :엔티티 프레임 워크 데이터 최적화 일대 다
Customer (Table):
CustomerID
FirstName
LastName
....
RegionCustomer (Table):
RegionCustomerID
RegionID
CustomerID
이 (한 고객이 많은 RegionCustomer을 가질 수 많은 관계로 하나를 설정 edmx) 다음 문을 사용하여 .NET 엔티티 프레임 워크를 통해 검색보다 : 당신이 있지만,이 SQL 서버 충격은 CPU 뭔가를 회전 긴하는 데 걸리는 성능 악몽 그 이후에 테이블에 < 1000 개의 레코드를 처리 할 때이 확인을 실행
EntitiesManager.Customers.Where(function(x) x.RegionCustomers.Any(function(y) y.RegionID = CurrentUserRegionID)).ToList()
. 위의 명령문이 생성하는 SQL은 (SQL 프로파일 러를 통해 추적 할 필요가있는) 꽤 불쾌합니다.
누군가가 어떻게 속도를 높일 수 있는지 궁금한가요? 사전에
감사
그것은 RegionCustomers 시작하는 데 도움이됩니다
안녕 Dan, 귀하의 회신에 감사드립니다. SelectMany는이 관계에서 나를 위해 작동하지 않을 것입니다. 그것은 올바른 데이터 (EntitiesManager.RegionCustomers.Where (function (regionCustomer) regionCustomer.RegionID = CurrentUserRegionID) .Select (function (regionCustomer) regionCustomer.Customers) .ToList())를 반환 한 바로 선택을 허용 할뿐입니다. 원래 방법보다 실제로 느린가? – Matt
SelectMany에 관심이 없다. 그게 VB 물건 또는 무엇인지 궁금합니다 ... –
이것이 당신의 문제라면 내 대답을 업데이 트하지만 거기에 그냥 많은 - 투 - 많은 관계로 매핑하지 않는 이유가 무엇입니까 ? 당신이 정말로하고 싶은 것이 EntitiesManager.Customers.Where의 라인을 따라있는 것처럼 보입니다. (function (customer) customer.Regions.Any (function (region) region.RegionID = CurrentUserRegionID) .ToList() –