Похоже, у вас возникла проблема с анализом параметров.Я не вижу ваши данные, но часто мы обнаруживаем, что они возникают даже в простых сценариях запросов, когда либо много строк соответствуют результату параметра, и он переворачивается на сканирование, даже если это не должно быть, или возникает какая-то другая проблема с данными, напримермногие значения уникальны, но по некоторому сценарию они решили, что столбец должен иметь 0 в большой части таблицы, бросая все для цикла.Если запрос из кода выполняется медленно, но вы можете выполнить тестовую процедуру из ssms, это довольно большой красный признак того, что что-то в этой строке является вашей проблемой.
Вы правы, что перезапуск SQL сбрасывает все планыкеш или вы можете вручную сбросить все планы, но вы абсолютно не хотите использовать этот метод, чтобы исправить план одной процедуры.Быстрое решение - вы можете выполнить EXEC sp_recompile 'dbo.procname';заставить его сбросить только один план выполнения процедуры и создать новый.Восстановление всех ваших планов, особенно в загруженной базе данных, может вызвать серьезные проблемы с производительностью других процедур, и, конечно, перезапуск может привести к простоям.Это только временно устраняет проблему, когда она возникает, хотя, если вы определили параметр, вызывающий проблемы, я бы рассмотрел дополнительно оптимизацию для неизвестных подсказок, специально предназначенных для обнаруженных проблем с прослушиванием параметров.Но также, возможно, убедитесь, что в вашей среде регулярно ведется хорошее обслуживание индекса, если это вызывает плохие планы, а не механизм sql.