Что означает «хранимые процедуры предварительно скомпилированы»? - PullRequest
6 голосов
/ 24 ноября 2010

Я часто слышал, как люди говорили, что хранимые процедуры предварительно скомпилированы. Что это значит?

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

Тогда, что означает "Pre"?

Ответы [ 3 ]

4 голосов
/ 24 ноября 2010

Они фактически предварительно проанализированы и синтаксис / семантика проверены на CREATE и ALTER

"Компиляция" в план запроса происходит по требованию

Для обзора компиляции и повторного использования,см. «Проблемы пакетной компиляции, перекомпиляции и планирования кэширования в SQL Server 2005»

Терминология (в том смысле, что вы имеете в виду) восходит к SQL Server 6.5 .«Новый» способ, выделенный в предыдущей ссылке на технический документ, начался с SQL Server 7.0

1 голос
/ 24 ноября 2010

Содержание sql хранимого процесса не будет проанализировано, если вы запустите его. Анализ SQL может быть очень трудоемкой операцией.

1 голос
/ 24 ноября 2010

В Microsoft SQL Server хранимые процедуры компилируются в план запроса при первом запуске.

При последующих запусках они иногда перекомпилируются из исходного кода, но не всегда.Вот почему они называются «предварительно скомпилированными».

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

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