В чем преимущество использования хранимых процедур для вставки / обновления / удаления / выбора? - PullRequest
3 голосов
/ 25 февраля 2011

В настоящее время я смотрю на некоторый код, который выполняет даже тривиальные операции вставки / выбора / обновления, выполняя хранимые процедуры.

Таким образом, код в основном делает

CallableStatememt stm= jdbcConnection.prepareCall(sp_name with ??) ;
stm.setParameters()
stm.execute();

Как я уже говорил, код видимости sp_name в основном тривиален. Нет многостоловых вставок или сложных вычислений.

Есть ли какие-либо преимущества от просто

Statement stm = jdbcConnection.prepareStatement(insert_query)
stm.setParameters();
stm.execute();

, где insert_query является «нормальным» одиночным оператором INSERT / SELECT / ...?

Ответы [ 3 ]

4 голосов
/ 25 февраля 2011

На ум приходят три основных преимущества производительности: 1. Строка, отправляемая на SQL Server, короче
2. Это сокращает время анализа
3. План выполнения готов заранее

Хотя это, казалось бы, тривиально, последний момент может быть значительным;проверка того, что объекты существуют, правильное количество полей и т. д.

В целом, однако, я бы сказал, что это имеет значение только при многократном вызове подряд.*

Более существенным преимуществом, на мой взгляд, является инженерное;Инкапсуляция.

В будущем вы можете решить добавить протоколирование или проверки согласованности, бизнес-логику или что-либо еще.Инкапсулируя его в SP, его нужно будет пересматривать только в одном месте.

1 голос
/ 03 апреля 2013

Основные преимущества использования хранимой процедуры:

  1. Все команды sql в SP будут выполняться вместе, или ни одна из них не будет выполнена. Это обеспечивает атомарность. Все команды sql в SP находятся в области транзакции.
  2. SP намного быстрее, чем обычные команды sql. БД компилируются и оптимизируются БД путем создания правильного плана выполнения.
  3. операторы потока управления, такие как IF-ELSE, и циклы, подобные FOR, могут использоваться в SP, но не в SQL-запросах. Это сохраняет большую часть данных, извлекаемых в DAO, а затем обрабатывает данные.
  4. Сокращает сетевой трафик, поскольку по сети передаются только необходимые данные.
  5. Модульный код SP, так как он помогает в повторном использовании и помогает поддерживать логику.
1 голос
/ 25 февраля 2011

Хранимая процедура - это предварительно скомпилированный исполняемый объект, который содержит один или несколько операторов SQL. Так как хранимые процедуры являются предварительно скомпилированными объектами, они быстрее выполняются на сервере базы данных. В большинстве случаев хранимые процедуры содержат более одной команды;

Подробнее здесь:

Подробнее о хранимых процедурах:

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