2012-06-22 10 views
0

정말 느리게 실행되는 LINQ to Entity 쿼리가 있습니다. 이 쿼리는 특정 데이터베이스에 대한 계산 논리를 수행 한 다음 그 결과를 ViewModel에 전달합니다. 쿼리의 맨 아래에 4 개의 select 문을 추가 할 때까지 쿼리가 정말 빨랐습니다. 결과 응답 컬렉션을 반환하려면 select 문이 필요합니다. 이렇게 쿼리가 이렇게 느리게 실행되는 이유는 무엇입니까? 나 여기 정확히 무엇이 잘못 당신에게,하지만 ORMS와 유사한 문제에 직면 한 모든, 내가 SQL 문이 실제로 발생하는 어떤 문제를 디버깅하는 가장 좋은 방법은 찾을 것을 제안 할 수 있습니다에 대한Linq to Entity 쿼리가 매우 느립니다.

var data = from SurveyResponseModel in db.SurveyResponseModels 
         group SurveyResponseModel by SurveyResponseModel.MemberId into resultCount 
         select new ResultsViewModel() 
         { 

          YesBarriersOthersResult = resultCount.Select(r => r.YesBarriersOthers), 
          NoBarriersOthersResult = resultCount.Select(r => r.NoBarriersOthers), 
          TotalResponsesResult = db.SurveyResponseModels.Count(), 
         }; 




      return View(data); 
+3

실제 SQL 명령을 확인합니다. 일부 쿼리가 여러 번 실행되거나 EF가 일부 미묘한 하위 쿼리를 작성했을 수 있습니까? –

+0

좋은 조언입니다. 개발을 위해 SQLCOmpact 에디션을 사용했지만 SQL Server 2008R2로 전환 한 후 훨씬 빨라졌습니다. – user547794

답변

3

그것은 어렵다 데이터베이스에 대해 실행하십시오. ORM이 너무 많은 SQL 문을 실행하여 동일한 간단한 결과를 얻는 경우가 많습니다.

+1

예. @ [Vishal 쿠마르] 맞습니다. 그리고 SQL 문과 프로세스를 확인하는 가장 좋은 방법은 ** SQL Profiler **를 사용하는 것입니다. 설치했다면 추적을 작성하고 SQL 측에서 실제로 진행중인 작업을 쉽게 볼 수 있습니다. – Tohid

관련 문제