데이터 액세스 응용 프로그램 블록을 호출 할 때 속도가 매우 느려집니다.DatabaseInstance.ExecuteSprocAccessor <T> (...) 호출이 왜 그렇게 간단한 쿼리를 수행하는 데 시간이 오래 걸립니까?
SP에 ("QuestionsToBeAnswered")이 반환에게 세 개의 열 58 행 호출입니다 (이 GUID가 및 정수 : 21AF77DA-2E76-47DB-AB54-0E5C85CD9AD8, 21AF77DA-2E76-47DB-AB54-0E5C85CD9AF0, 2) 이내에 서버에서 직접 실행될 때 1 초 이상. 제 SQL 경험은 꽤 좋았습니다. SQL 서버에 문제가 존재하지 않는다고 확신합니다.
그러나 DAAB을 통해 호출 될 때 개체 컬렉션을 반환하는 데 시간이 오래 걸립니다. ExecuteSprocAccessor (...)는 일반적으로 IEnumerable을 반환하며 SP는 컬렉션이 열거되거나 소비 될 때까지 실행되지 않으므로 소비가 발생할 때까지이 문제가 표시되지 않습니다.
DatabaseInstance.ExecuteSprocAccessor<T>(storedProcedure, rowMapper, args);
이 동일한 코드가 반환 문제> 훨씬 더 복잡한 정보의 200 개 행이 없음을 감안할 때,이 코드는 너무 오래 걸리는 이유에 당황하고 (55초를!)을 실행 할 수 있습니다.
모든 아이디어를 환영 할 것이다 ...
저장 프로 시저 실행 계획을 다시 컴파일 해보십시오. – Jack
@Jack이 문제의 일부로 SP를 다시 설계 했으므로 (실행 시간이 1 초 미만으로 크게 단축되었지만) 결과가 1 분 정도 걸리는 클래스의 인구입니다. 생각해 줘서 고마워! –
나는 단지 다음과 같이 확인하고 싶다 :이 쿼리는 항상 ssms에서 빠르지 만, daab에서는 항상 느리다. 권리? –