응답 시간을 줄이기 위해이 LINQ에서 엔티티 쿼리를 최적화 할 수있는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2028335

문제

IQueryable<WebEvent> mySearch = 
    eventDC.GetBooks()
        .Where(p => p.Price.Any(d => d.EventDatetime.Month == fromDate.Month 
                                     && d.EventDatetime.Year == fromDate.Year))
        .WithGroup(groupId)
        .OrderBy(p => p.Price.Where(r => r.Datetime >= fromDate)
                             .OrderBy(q => q.Datetime)
                             .FirstOrDefault().Datetime);
List<Book>ventsList = mySearch.ToList<Book>();

우리는 긴 쿼리를 가지고 있으며, 책과 정렬을 얻는 데 많은 시간을 소비합니다. 성능 테스트 후이 쿼리가 포함 된 페이지의 응답 시간을 찾았으며,이를 해결하고 응답을 줄여야합니다. 시각.

누구든지 제안이 있습니까?

도움이 되었습니까?

해결책

일반적으로 SQL을 검사하여 생산하는 내용을 확인하고 인라인으로 수행 할 수 있습니다. 이를 도울 수있는 도구가 있으며 LinqPad라고하며 LINQ 쿼리를 만들고 LINQ 쿼리를 조정하여 재생할 수 있습니다. 또한 인덱스를 추가 할 장소를 찾고 있습니다. 이렇게하면 성능 속도가 빨라질 수 있습니다 (너무 많은 색인이 성능을 해칠 수 있으므로 조심하십시오).

다른 팁

정확히 무엇을하려고합니까? 여기에 스키마에 대한 아이디어를 줄 수 있습니까?

스키마를 모르기 때문에 이것은 나에게 이상한 진술처럼 보입니다.

p => p.price.any (d => d.eventDateTime.month ...

그러나 나는 여기서 어둠 속에서 총을 맞아 다음에 문제가 있다고 말할 것입니다.

eventDc.getBooks ()

해당 메소드가 저장된 절차를 호출하거나 데이터베이스에서 "책에서 * 선택 *"을 수행하는 경우 실제로 수행하는 작업은 다음과 같습니다.

  1. DB에서 모든 책을 선택합니다
  2. 결과 목록을 가져 와서 원하는 책만 선택

이것이 사실이라면 아마도 당신의 가장 큰 문제 일 것입니다.

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