Являются ли хранимые процедуры более эффективными, чем встроенные операторы в современных СУБД?

Причины использования хранимых stored-procedures процедур:

  • Уменьшите сетевой трафик - вам нужно отправить инструкцию SQL по сети. С помощью sprocs вы можете выполнять SQL пакетами, что также более эффективно.
  • Кэширующий план запроса - при первом выполнении sproc SQL Server создает план выполнения, который кэшируется для повторного использования. Это особенно эффективно при частом выполнении небольших запросов.
  • Возможность использовать выходные параметры - если вы отправляете встроенный SQL, который возвращает одну строку, вы можете получить обратно только набор записей. С помощью sprocs вы можете вернуть их в качестве выходных параметров, что значительно быстрее.
  • Разрешения - когда вы отправляете встроенный SQL, вы должны предоставить пользователю права доступа к таблице (таблицам), что дает гораздо больший доступ, чем просто разрешение на выполнение sproc
  • Разделение логики - удалите код, генерирующий SQL, и поместите его в базу данных.
  • Возможность редактировать без перекомпиляции - это может вызывать споры. Вы можете редактировать SQL в sproc без перекомпиляции приложения.
  • Найти, где используется таблица - с помощью sprocs, если вы хотите найти все операторы SQL, ссылающиеся на определенную таблицу, вы можете экспортировать код sproc и выполнить поиск по нему. Это намного проще, чем пытаться найти это в коде.
  • Оптимизация. Администраторам баз данных проще оптимизировать SQL и настроить базу данных при использовании sprocs. Легче найти недостающие индексы и тому подобное.
  • Атаки с использованием SQL-инъекций - правильно написанный встроенный SQL может защитить от атак, но sprocs лучше подходят для этой защиты.

sql

database

stored-procedures

2022-08-27T05:56:45+00:00
Вопросы с похожей тематикой, как у вопроса:

Являются ли хранимые процедуры более эффективными, чем встроенные операторы в современных СУБД?