У меня была хранимая процедура, которая возвращает набор значений 8 integer
.В начале все кажется выполненным правильно, но после некоторого выполнения, когда я выполняю его в своем коде C ++ с использованием TADOQuery
, время выполнения увеличивается, но не в SSMS, в котором время выполнения все еще корректно.
На первом этапе я пытаюсь усовершенствовать свою хранимую процедуру, чтобы повысить ее производительность.Я заработал некоторое время на выполнение, но проблема все еще присутствует.
Я также пытаюсь проверить свой код на предмет поиска некоторых абсурдных строк, которые могут увеличить время выполнения.Но я использую тот же код с другими хранимыми процедурами, и они не показывают того же эффекта.
Поэтому я использую SQL Profiler, чтобы увидеть, что, черт возьми, происходит.Ниже вы можете увидеть разницу между хорошим и плохим исполнением.
Хорошее исполнение
CPU | Reads | Writes | Duration
93 | 13657 | 0 | 113
Плохое исполнение
CPU | Reads | Writes | Duration
22090 | 31960629 | 0 | 25158
Как вы можете видеть, значения reads и доступа к процессору растут в геометрической прогрессии.
Если я выполню ту же хранимую процедуру в редакторе запросов SSMS, результаты будут полученыхорошее выполнение.
Я просто хочу, чтобы моя хранимая процедура выполнялась всегда с более или менее одинаковой продолжительностью, независимо от того, где я выполняю запрос.