복붙노트

[SQL] C # 및 SQL Server 관리 Studio에서 SQL 쿼리의 매우 다른 실행 시간

SQL

C # 및 SQL Server 관리 Studio에서 SQL 쿼리의 매우 다른 실행 시간

전 C #에서 실행하는 경우가 SQL Server Management Studio를 실행할 때 시간 초과 때마다, 성공적으로 즉시 완료 반면 다음을 통해 30 초 걸리는 간단한 SQL 쿼리를 가지고있다. 후자의 경우, 쿼리 실행 계획을 괴롭히는 아무것도 알 수없고, 실행 시간은 몇 가지 간단한 작업을 통해 잘 전염됩니다.

나는 쿼리가 C #에서 실행되는 동안 'EXEC의 sp_who2'를 실행했습니다, 그것은 CPU 시간을 29,000 밀리 초 복용으로 표시되며, 아무것도에 의해 차단되지 않습니다.

나는이 문제를 해결하기 시작하는 방법을 모른다. 사람이 어떤 통찰력을 가지고 있습니까?

쿼리는 다음과 같습니다

SELECT
    c.lngId,
    ...
FROM tblCase c
    INNER JOIN tblCaseStatus s ON s.lngId = c.lngId
    INNER JOIN tblCaseStatusType t ON t.lngId = s.lngId
    INNER JOIN [Another Database]..tblCompany cm ON cm.lngId = cs.lngCompanyId
WHERE t.lngId = 25
    AND c.IsDeleted = 0
    AND s.lngStatus = 1

해결법

  1. ==============================

    1.C #을에서 실행될 때 쿼리의 쿼리 계획을 추출, 시작하려면 :

    C #을에서 실행될 때 쿼리의 쿼리 계획을 추출, 시작하려면 :

    select p.query_plan, *
    from sys.dm_exec_requests r
    cross apply sys.dm_exec_query_plan(r.plan_handle) p
    where r.session_id = <spid of C# connection>
    

    그런 다음 SSMS 세션에서 실행 계획과 비교 (단순히 도구 모음에서 표시 실제 계획을 클릭).

    그리고, 일반적으로, 항상 추측이 아닌 체계적인 접근 방법을 적용하려고합니다. 대기 및 큐는 아주 좋은, 입증, SQL 서버의 성능 문제 해결 방법입니다.

  2. from https://stackoverflow.com/questions/3070653/very-different-execution-times-of-sql-query-in-c-sharp-and-sql-server-management by cc-by-sa and MIT license