2011-04-29 3 views
1

LINQ에 의해 생성 된 쿼리에 시간 초과 오류가 발생합니다. 그러나 SQL 서버 관리 스튜디오에서 생성 된 쿼리를 실행하면 1 초 이내에 실행됩니다. LINQ를 사용LINQ (전체 텍스트 검색 사용)로 실행하면 SQL 쿼리가 느려짐

:

Eventclass = RPC : 완료
가능 ApplicationName = 닷넷하는 SqlClient 데이터 공급자
아래

exec sp_executesql N'SELECT COUNT(*) AS [value] 
FROM [dbo].[Document] AS [t0] 
INNER JOIN [dbo].[Document_Search_order_nummer](@p0) AS [t1] ON [t0].[DocumentID] = [t1].[Key] 
LEFT OUTER JOIN [dbo].[DocType] AS [t2] ON [t2].[Id] = [t0].[DocumentTypeIDOut] 
LEFT OUTER JOIN [dbo].[DocTypeFormat] AS [t3] ON [t3].[Id] = [t2].[FormatId] 
LEFT OUTER JOIN [dbo].[DocTypeType] AS [t4] ON [t4].[Id] = [t2].[TypeId] 
INNER JOIN [dbo].[OriginalDocument] AS [t5] ON [t5].[OriginalDocID] = [t0].[OriginalDocID] 
INNER JOIN [dbo].[User] AS [t6] ON [t6].[User_ID] = [t0].[DocumentFrom] 
INNER JOIN [dbo].[User] AS [t7] ON [t7].[User_ID] = [t0].[DocumentTo] 
WHERE ([t0].[DocumentID] <> @p1)',N'@p0 nvarchar(4000),@p1 int',@p0=N'"*+11110001+*" ',@p1=270675 

는 SQL 서버 프로파일의 로그입니다 : 여기

는 쿼리의 CPU = 12625
Reads = 1137844
글 ES = 0 기간 = 29989

사용하여 SQL Server Management Studio를
: = SQL

Eventclass :
가능 ApplicationName = Microsoft SQL Server Management Studio를 BatchCompleted - 쿼리
CPU는 = 78
은 = 31,645
를 읽어 쓰기 = 0
지속 시간 = 99

동등한 쿼리로 이처럼 큰 성능 차이가 발생하고 어떻게이 문제를 해결할 수 있습니까?

+0

나를 제대로 추적 할 수있는 사람은 누구입니까? :( – brechtvhb

+0

여기를보십시오 : http://www.mssqltips.com/sqlservertip/1304/reproducing-sql-server-query-execution-plan-performance-problems/ –

답변

0

우리는 똑같은 문제를 한 번 겪었습니다.

가능한 원인은 parameters type mismatching 일 수 있습니다.

그러나 이것은 우리의 경우에는 문제가되지 않았습니다. 어떤 경우 쿼리가 실행되는 데 더 오랜 시간이 걸리는 것으로 나타났습니다. 그래서 쿼리를 분리하고 ADO.NET SqlCommand 클래스를 실행했습니다. 믿거 나 말거나 SQL 명령 사이에 여분의 공백을 추가하면 쿼리가 훨씬 빨리 실행됩니다.

그래서 우리는 쿼리를 가져 와서 뷰를 생성했습니다. 그것은 우리의 문제를 해결했습니다.