Вы должны простить мою наивность, поскольку я не администратор баз данных, но, насколько я понимаю, со временем статистика изменения базы данных и хранимая процедура должны быть перекомпилированы, чтобы поддерживать план запроса в актуальном состоянии с учетом последних статистических данных.
Предполагая, что у меня есть хранимая процедура в моей базе данных, которая перекомпилируется с последней статистикой через некоторый регулярный интервал, каковы последствия включения хранимой процедуры в код и ее переноса в sp_executesql
оператор? Потеряю ли я обновление плана запроса, который раньше выполнялся как часть перекомпиляции процедуры?
Если есть что-то еще (кроме разрешений), которое мне нужно рассмотреть, прежде чем я сделаю это изменение, я буду признателен за ваши идеи.
Я прочитал это на MSDN:
Способность оптимизатора запросов SQL Server сопоставлять новую строку Transact-SQL с существующим планом выполнения ограничивается постоянно меняющимися значениями параметров в тексте строки, особенно в сложных операторах Transact-SQL.
Итак, если предположить, что хранимая процедура, которую я пытаюсь встроить и встроить sp_executesql
, действительно содержит некоторые параметры, означает ли это, что, хотя мой план выполнения кэшируется, я затрудняю его обнаружение и повторное использование SQL Server?
источник