Как уже говорили другие, вы не хотите просто включать WITH RECOMPILE
в каждый сохраненный процесс по привычке. Тем самым вы исключите одно из основных преимуществ хранимых процедур: тот факт, что он сохраняет план запроса.
Почему это потенциально важно? Вычисление плана запроса намного более интенсивно, чем компиляция обычного процедурного кода. Поскольку синтаксис оператора SQL указывает только что вы хотите, а не (как правило) как его получить, это позволяет базе данных иметь большую степень гибкости при создании физического плана ( то есть пошаговые инструкции для фактического сбора и изменения данных). Существует много «хитростей», которые может выполнять препроцессор запросов к базе данных, и выбор, который он может сделать - какой порядок объединения таблиц, какие индексы использовать, применять ли предложения WHERE
до или после объединений и т. Д.
Для простого оператора SELECT это может не иметь значения, но для любого нетривиального запроса база данных будет тратить некоторое серьезное время (измеряемое в миллисекундах, в отличие от обычных микросекунд), чтобы придумать оптимальный план. Для действительно сложных запросов он не может даже гарантировать оптимальный план, он должен просто использовать эвристику, чтобы придумать довольно хороший план. Поэтому, заставляя его перекомпилировать каждый раз, вы говорите ему, что он должен проходить этот процесс снова и снова, даже если план, который он получил, был совершенно хорош.
В зависимости от поставщика, должны быть автоматические триггеры для перекомпиляции планов запросов - например, если статистика в таблице значительно изменяется (например, гистограмма значений в определенном столбце начинает равномерно распределяться с течением времени, сильно искажается ), то БД должна это заметить и перекомпилировать план. Но, вообще говоря, разработчики базы данных будут в целом умнее, чем вы.
Как и во всем, что касается производительности, не делайте снимки в темноте; определите, где находятся узкие места, которые стоят 90% вашей производительности, и сначала решите их.