응답 시간을 줄이기 위해이 LINQ에서 엔티티 쿼리를 최적화 할 수있는 방법은 무엇입니까?
-
19-09-2019 - |
문제
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 ()
해당 메소드가 저장된 절차를 호출하거나 데이터베이스에서 "책에서 * 선택 *"을 수행하는 경우 실제로 수행하는 작업은 다음과 같습니다.
- DB에서 모든 책을 선택합니다
- 결과 목록을 가져 와서 원하는 책만 선택
이것이 사실이라면 아마도 당신의 가장 큰 문제 일 것입니다.
제휴하지 않습니다 StackOverflow