이런 요청이 있습니다
SELECT
[EstimateId],
[CreationUserId],
[EstimateStatusValueId],
[LanguageId],
[LocationId],
[EstimatorUserId],
[FilterUnitSystemTypeId],
[EstimateNumber],
[RevisionNumber],
[CreationDate],
[ModificationDate],
[ProjectDescription],
[IsBsdq],
[ClosingDate],
[ClosingTime],
[ClosingUpdatedOn],
[DeadLineDate],
[IsReceived],
[Inclusion],
[Exclusion],
[Misc],
[Note],
[WorkDeadLines],
[Comments],
[Validity],
[PlansLocation],
[PlansReceivedFrom],
[Price]
FROM [Estimate].[Estimates]
ORDER BY [ClosingDate] ASC, [ClosingTime] ASC
SSMS 에서이 쿼리를 실행하면 953ms의 실행 시간이 발생하지만 C #의 Linq 쿼리 에서이 쿼리를 실행하면 1813ms의 실행 시간이 발생합니다.
Linq 쿼리는 ".Net SqlClient 데이터 공급자"를 사용하며 EntityFramework (EDMX 파일)에 대해 발행됩니다. 이것이 문제가 될 수 있습니까?
아무도 같은 요청이지만 동일한 데이터베이스에 대해 다른 컨텍스트에서 실행되는 요청의 실행 시간 사이에 왜 큰 차이가 있는지 아는 사람이 있습니까?
두 요청의 모든 실행 계획을 확인했으며 동일한 인덱스를 사용하여 해당 쿼리를 충족시킵니다.
C # 요청의 실행 계획을 보려면 SQL 프로파일 러를 사용하여 Show Plan XML 이벤트를 트랩하고 SSMS 중 하나와 비교하면 둘 다 동일합니다.
작은 질문-왜 검색 조건없이 모든 테이블의 데이터를 선택합니까? 필터링없이 응용 프로그램의 모든 데이터가 실제로 필요합니까?
—
Marian
예, 이것이 필요한 기능이지만이 기능은 자주 사용되지 않습니다. where 절없이 큰 쿼리를 발행하는 것이 최적이 아니라는 것을 알고 있습니다.
—
Nico
어쨌든 내 관심사는 요청 자체가 아니라 실행 시간의 차이입니다. 이 쿼리를 보여 주지만 모든 쿼리는 비슷한 결과를 제공합니다. 왜 ?
—
Nico