У меня есть простой SQL-запрос, который, когда выполнено от C# принимает 30 секунд затем времена каждый раз, тогда как при выполнении на Studio управления SQL Server успешно завершается немедленно. В последнем случае план выполнения запросов ничего не показывает беспокойство, и время выполнения распространено приятно посредством нескольких простых операций.
Я работал'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
Для начала извлеките план запроса при запуске из 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.