Следует ли вам когда-либо использовать ОБА ОПЦИИ «Перекомпилировать» и «Оптимизировать для» в одном запросе? - PullRequest
1 голос
/ 27 июня 2019

Я унаследовал около 20 хранимых процедур, каждый запрос которых заканчивается на:

OPTION(RECOMPILE, OPTIMIZE FOR(@big_id = 999))

Насколько я понимаю, эти опции говорят серверу каждый раз перекомпилировать план выполнения этого оператора, а также заставляют его использовать это единственное число для оптимизации каждый раз.

Так не происходит ли перекомпиляция EXACT SAME PLAN каждый раз из-за опции «Оптимизировать для»?

Или мне не хватает какого-то "секретного соуса" в Constant Folding, который делает что-то волшебное?

(мне кажется, что это бесполезная трата циклов с постоянной перекомпиляцией запроса)

1 Ответ

0 голосов
/ 27 июня 2019

Другие вещи, такие как статистика, могли измениться после создания плана, независимо от того, для какого значения оно было оптимизировано.

Сказать, что это - вряд ли его стоит перекомпилировать каждый раз. Похоже, кто-то сумел ускорить запрос один раз по совпадению и применил его вслепую ко всем остальным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...