Количество данных в таблице;
Наличие и тип индексов таблицы, и распределение данных в индексных колонках;
Сопоставляет операторы и значения, которые используются в WHERE.
Наличие объединений.
Компиляций подразумевает процесс анализа встроенной процедуры и создания плана выполнения, который помещается в кэш процедур. Этот кэш хранит часто используемые планы процедур. Факторы, которые увеличивают шансы плана для включения в кэш:
Время, необходимое для перекомпиляции
Частота использования
Встроенные процедуры представляют множество преимуществ. С ними вы можете:
Разделяют логику приложений с другими приложениями, таким образом, гарантируется совместимый доступ и модификация данных.
Если процедуры поддерживают все бизнес функции, которые нужны для выполнения пользователю, пользователь никогда не нуждается в прямом доступе к таблицам.
Предоставляет механизм защиты. Пользователи могут получать право выполнять процедуры, даже если у них нет права на просмотрщик или таблицу, на которую ссылается процедура.
Повышается производительность. Процедуры выполняют множество задач, как набор операторов Transact-SQL.
Уменьшение сетевого трафика. Пользователи могут выполнять комплекс операций посылая только один запрос, что уменьшает количество запросов между клиентом и сервером.
В этом разделе будет описан процесс создания, выполнения, изменения и удаления встроенных процедур.
Вы можете создать встроенные процедуры только в текущей базе данных, исключая временные процедуры, которые всегда создаются в базе данных tempdb. Создание процедуры похоже на создание просмотрщика. Первым делом напишите и протестируйте операторы Transact-SQL, которые будут включены в процедуру. После этого, если вы получили результат, который ожидали, создавайте процедуру.
Для создания процедуры используйте оператор CREATE PROCEDURE. При создании примите во внимание следующие факты:
Процедуры могут ссылаться на просмотрщики, таблицы, функции определённые пользователем и другие процедуры, а также временные таблицы.
Если процедура создаёт временную локальную таблицу, таблица существует только во время выполнения и невидима после завершения выполнения.
Для создания процедуры, вы должны иметь соответствующие права, например быть владельцем базы данных или администратором.
Максимальный размер встроенной процедуры 128 мегабайт, и зависит от доступной памяти.
Синтаксис:
CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]
[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
[ FOR REPLICATION ]
AS sql_statement [ ...n ]
Следующий пример создаёт процедуру, которая отображает просроченные счета:
USE Northwind
GO
CREATE PROC dbo.OverdueOrders
AS
SELECT *
FROM dbo.Orders
WHERE RequiredDate<GETDATE() AND SnippedDate IS NULL
GO
Процедуры могут быть вложенными (одна процедура может вызывать другую). Характеристики вложенных процедур следующие:
Процедуры могут быть вложены на 32 уровня. Если более 32 уровней, то происходит ошибка.
Текущей уровень вложенности хранится в системной функции @@nestlevel.
Если первая процедура вызывает вторую, то вторая может получить доступ ко всем объектам первой, включая временные таблицы.
Встроенные процедуры могут быть рекурсивными. Например, если процедура 1 вызвала процедуру 2, то процедура 2 может вызвать первую.
Для просмотра информации о встроенных процедурах используйте системные процедуры sp_help, sp_helptext, sp_depends. Для просмотра всех имён процедур базы данных используйте sp_stored_procedures.
Примите во внимание следующие рекомендации, когда создаёте процедуры:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.