2011-09-03 3 views

ответ

33

Хранимые процедуры представляют собой последовательность инструкций на языке PL/SQL. Является языком программирования, реализованным некоторыми СУБД, который позволяет хранить последовательности запросов, часто применяемых к вашей модели, и делиться загрузкой с прикладным уровнем.

Подготовленные операторы - это запросы, написанные с помощью заполнителей вместо фактических значений. Вы пишете запрос, и он компилируется только один раз СУБД, а затем вы просто передаете значения для размещения в заполнителях. Преимущество использования подготовленных операторов заключается в том, что вы значительно повышаете производительность и защищаете свои приложения от SQL Injection.

Разница заключается в том, что вы не можете хранить подготовленные заявления. Вы должны «подготовить» их каждый раз, когда вам нужно их выполнить. С другой стороны, хранимые процедуры могут быть сохранены, связанные с схемой, но вам нужно знать PL/SQL для их записи.

Вы должны проверить, поддерживает ли ваша СУБД.

Оба являются очень полезными инструментами, вы можете комбинировать.

Надеюсь, это короткое объяснение будет вам полезно!

10

Сохраненная процедура хранится в БД - в зависимости от того, какая БД (Oracle, MS SQL Server и т. Д.) Она скомпилирована и потенциально подготовлена ​​оптимизирована когда вы создаете его на сервере ...

Подготовленный оператор - это оператор, который анализируется сервером, и план выполнения создается сервером, готовым к выполнению всякий раз, когда вы запускаете инструкцию ... обычно это имеет смысл когда оператор запускается более одного раза ... в зависимости от сервера БД (Oracle и т. д.) и даже иногда вариантов конфигурации эти «подготовка» являются либо специфичными для сеанса, либо «глобальными» ...

Нет никакого " делать ставку ter ", когда вы сравниваете эти два, так как они имеют свои конкретные варианты использования ...

0

другие ответы намекают на это, но я хотел бы перечислить плюсы и минусы в явном виде:

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

PROS:

  1. Каждый запрос обрабатывается более быстрее, чем прямой запрос, потому что сервер предварительно компилирует их.
  2. Каждый запрос может быть написан только один раз. Он может выполняться столько раз, сколько необходимо, даже в разных сеансах и разных соединениях.
  3. Позволяет запросам включать конструкторы программирования (такие как циклы, условные операторы и обработку ошибок), которые невозможно или трудно записать в SQL.

СВОД

  1. требует знаний независимо от языка программирования использует сервер базы данных.
  2. Иногда могут потребоваться специальные разрешения для их записи или вызова.

Подготовленные выражения

ПРОФИ

  1. Как хранимые процедуры, быстро, потому что запросы прекомпилируются.

СВОД

  1. Нужно быть переписан с каждым соединением или сессии.
  2. Чтобы иметь накладные расходы, каждый подготовленный оператор должен выполняться более одного раза (например, в цикле). Если запрос выполняется только один раз, большее количество накладных расходов переходит к подготовке подготовленного оператора, чем вы возвращаетесь с тех пор, как сервер все равно должен скомпилировать SQL, но также сделать подготовленный оператор.

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

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

Смежные вопросы