나는 두 개의 테이블이 하나의 외래 키 "PointID"로 연결, 한 부모 "포인트"한 아이 "PointValue", 2005 년이 간단한 LINQ의 성능을 어떻게 향상시킬 수 있습니까?
은 내가 LINQ가 SQL Server의 일대 다 관계를 만들어가 질문 : 당신은에서 볼 수 있듯이
var points = from p in ContextDB.Points
//join v in ContextDB.PointValues on p.PointID equals v.PointID
where p.InstanceID == instanceId
orderby p.PointInTime descending
select new
{
Point = p,
Values = p.PointValues.Take(16).ToList()
};
조인 주석하고 "값"할당은 "포인트"테이블 "PointValue는"("포인트"및 LINQ에 의해 "PointValues"라고 함)하는 관계를 가지고있다.
"var points"IQueryable (예 : GridView에 바인딩 할 때 등)을 반복 할 때 초기 쿼리는 매우 빠르지 만 "Values"속성을 반복하는 것은 매우 느립니다. SQL 프로파일 러는 "포인트"의 각 값에 대해 IQueryable 다른 쿼리가 실행된다는 것을 보여줍니다.
어떻게 이것을 하나의 쿼리로 만들 수 있습니까?
흥미롭게도 초기 쿼리는 조인의 주석을 제거 할 때 매우 느려집니다.
고맙습니다. 궁극적으로 두 번째 테이블은 FK를 사용하여 추출 할 수 있기 때문에 별도의 쿼리로이를 수행하여 List로 변환 한 다음 메모리 내 목록에서 반복 쿼리를 수행합니다. 이것은 매우 빠르다는 것이 밝혀졌습니다. –