Очень разные времена выполнения SQL-запросов в C # и SQL Server Management Studio - PullRequest
5 голосов
/ 18 июня 2010

У меня есть простой запрос SQL, который при запуске из C # занимает более 30 секунд, а затем время ожидания каждый раз, тогда как при запуске в SQL Server Management Studio успешно завершается мгновенно.В последнем случае план выполнения запроса не вызывает никаких проблем, и время выполнения хорошо распределено с помощью нескольких простых операций.

Я выполнил 'EXEC sp_who2', пока запрос выполняется из C #, ион занял 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 Ответ

5 голосов
/ 18 июня 2010

Для начала извлеките план запроса из запроса, когда он запускается из 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 Server.

...