Перехват параметров снижает производительность хранимой процедуры

Я использую SQL Server 2012. Недавно у меня возникли проблемы с производительностью всех моих хранимых процедур, хотя код внутри процедур работает очень быстро.

Я нашел кое-что о сниффинге параметров, поэтому я использовал метод определения локальных переменных в качестве обходного пути для всех моих процедур.

Я спросил себя, почему это происходит со мной на всех моих процедурах. Мое единственное предположение состоит в том, что все мои процедуры используют один необязательный параметр.

Это заголовок всех моих процедур

CREATE PROC [dbo].[MySampleProc] (@Key  Int = NULL) 
AS
....

Я прав? или у тебя есть другая идея?

1 ответ

Возможно, это не анализ параметров, а устаревшая статистика. С локальной переменной (или подсказкой запроса OPTIMIZE FOR UNKNOWN) оценка количества строк основана на средней плотности. Однако фактические значения гистограммы статистики используются при указании параметров, поэтому оценки количества строк будут отключены, когда статистика устарела.

Попробуйте обновить статистику с FULLSCAN,

Другие вопросы по тегам