SQL - использование процедур для SELECT/UPDATE/INSERT/DELETE

В последнее время просматривал множество разных OpenSource проектов, с использованием SQL. Во почти всех проектах заметил такую закономерность, использования процедур для разных запросов а ля SELECT/UPDATE/INSERT/DELETE.

Заинтересовал вопрос, почему для таких операций используют процедуры, а не просто обычные прямые запросы, сгенерированные тем же MSSQL?

В чем преимущество процедур в данном контексте?


Ответы (1 шт):

Автор решения: dtroyan

Это правильный подход, если запрос выполняется не один раз. Почитайте про использование параметризированных переменных. Простыми словами в таких процедурах запрос уже разобран сервером БД и сохранен у себя. Вы вызываете процедуру и передаете ей что-то, это что-то подставляется в параметризированную переменную в запросе, и серверу остается только одно - сделать выборку. Если же вы отсылаете серверу традиционный запрос, то сервер каждый раз его разбирает, строит план и так далее... Что увеличивает и время запроса, и потребление дополнительных ресурсов сервера. Где на промышленных серверах ресурсы принято беречь, и время запроса критично.

→ Ссылка