Я не так хорошо разбираюсь в SQL, как раньше, но я бы попробовал перестроить хранимые процедуры.То, что вы описали, было довольно распространенным явлением, если вы строили свои хранимые процедуры в то время, когда в таблице не было данных, или характер таблицы со временем меняется.
Хранимая процедура работает так быстро, потому что она сохраняет некоторые предварительные (и трудоемкие) задачи, такие как синтаксический анализ и план запроса.Если содержимое вашей базы данных выглядело совсем не так, как сейчас, план запроса может быть далеко, и поиск данных наименее эффективным способом.Когда вы выполняете свои сценарии вне хранимой процедуры, план запроса строится с нуля в соответствии с его последним пониманием данных, которые ему необходимо искать, поэтому он будет стремительно работать со временем независимо от того, что находится в ваших таблицах или как таблицасо временем изменилось.
По сути, каждый раз, когда хранимая процедура возвращается медленнее, чем при выполнении обычного запроса, это признак того, что план запроса хранимой процедуры нуждается в обновлении.