В чем разница между хранимыми процедурами и подготовленными утверждениями ... И какой из них лучше и почему ... !! Я пытался это сделать, но у меня не было лучшей статьи ...Дифференциация между хранимыми процедурами и подготовленными заявлениями ..?
ответ
Хранимые процедуры представляют собой последовательность инструкций на языке PL/SQL. Является языком программирования, реализованным некоторыми СУБД, который позволяет хранить последовательности запросов, часто применяемых к вашей модели, и делиться загрузкой с прикладным уровнем.
Подготовленные операторы - это запросы, написанные с помощью заполнителей вместо фактических значений. Вы пишете запрос, и он компилируется только один раз СУБД, а затем вы просто передаете значения для размещения в заполнителях. Преимущество использования подготовленных операторов заключается в том, что вы значительно повышаете производительность и защищаете свои приложения от SQL Injection.
Разница заключается в том, что вы не можете хранить подготовленные заявления. Вы должны «подготовить» их каждый раз, когда вам нужно их выполнить. С другой стороны, хранимые процедуры могут быть сохранены, связанные с схемой, но вам нужно знать PL/SQL для их записи.
Вы должны проверить, поддерживает ли ваша СУБД.
Оба являются очень полезными инструментами, вы можете комбинировать.
Надеюсь, это короткое объяснение будет вам полезно!
Сохраненная процедура хранится в БД - в зависимости от того, какая БД (Oracle, MS SQL Server и т. Д.) Она скомпилирована и потенциально подготовлена оптимизирована когда вы создаете его на сервере ...
Подготовленный оператор - это оператор, который анализируется сервером, и план выполнения создается сервером, готовым к выполнению всякий раз, когда вы запускаете инструкцию ... обычно это имеет смысл когда оператор запускается более одного раза ... в зависимости от сервера БД (Oracle и т. д.) и даже иногда вариантов конфигурации эти «подготовка» являются либо специфичными для сеанса, либо «глобальными» ...
Нет никакого " делать ставку ter ", когда вы сравниваете эти два, так как они имеют свои конкретные варианты использования ...
другие ответы намекают на это, но я хотел бы перечислить плюсы и минусы в явном виде:
хранимых процедур
PROS:
- Каждый запрос обрабатывается более быстрее, чем прямой запрос, потому что сервер предварительно компилирует их.
- Каждый запрос может быть написан только один раз. Он может выполняться столько раз, сколько необходимо, даже в разных сеансах и разных соединениях.
- Позволяет запросам включать конструкторы программирования (такие как циклы, условные операторы и обработку ошибок), которые невозможно или трудно записать в SQL.
СВОД
- требует знаний независимо от языка программирования использует сервер базы данных.
- Иногда могут потребоваться специальные разрешения для их записи или вызова.
Подготовленные выражения
ПРОФИ
- Как хранимые процедуры, быстро, потому что запросы прекомпилируются.
СВОД
- Нужно быть переписан с каждым соединением или сессии.
- Чтобы иметь накладные расходы, каждый подготовленный оператор должен выполняться более одного раза (например, в цикле). Если запрос выполняется только один раз, большее количество накладных расходов переходит к подготовке подготовленного оператора, чем вы возвращаетесь с тех пор, как сервер все равно должен скомпилировать SQL, но также сделать подготовленный оператор.
За свои деньги я бы пошел с Хранимыми процедурами каждый раз, так как их нужно было написать только один раз. После этого каждый вызов процедуры приводит к сохраненному времени, независимо от того, подключено ли вы к новому соединению или нет, и вызываете ли вы процедуру в цикле или нет. Единственный недостаток - потратить некоторое время на изучение языка программирования. Если у меня не было прав на запись хранимых процедур, я бы использовал подготовленный оператор, но только если бы мне пришлось повторять один и тот же запрос несколько раз в одном сеансе.
Это заключение, которое я пришел после нескольких месяцев внеочередного исследования различий между этими двумя конструктами. Если кто-то может исправить плохие обобщения, которые я делаю, это будет стоить потери репутации.
- 1. Разница между исполняемым оператором, подготовленными операторами, хранимыми процедурами (Java-MySQL)
- 2. Разница между хранимыми процедурами и расширенными хранимыми процедурами
- 3. Отношения между хранимыми процедурами?
- 4. вызова между хранимыми процедурами
- 5. Получите InsertId с подготовленными инструкциями и хранимыми процедурами?
- 6. Обмен данными между хранимыми процедурами
- 7. Разница между двумя хранимыми процедурами
- 8. mysqli_fetch_array с подготовленными заявлениями
- 9. Помогите с подготовленными заявлениями
- 10. Ограничить пользователя хранимыми процедурами
- 11. Linq над хранимыми процедурами
- 12. Проблемы с хранимыми процедурами
- 13. SimpleMembership с хранимыми процедурами
- 14. Результаты тестирования модулей между несколькими хранимыми процедурами?
- 15. Проблема с подготовленными заявлениями в
- 16. Сохранение времени с подготовленными заявлениями
- 17. в DB2 с подготовленными заявлениями и партией
- 18. проблема дизайна с хранимыми процедурами
- 19. Mvc.JQuery.DataTables с хранимыми процедурами DataTable
- 20. Использование Linq с хранимыми процедурами
- 21. Выходы с несколькими хранимыми процедурами
- 22. Сохранение ORM с хранимыми процедурами
- 23. Есть ли разница в производительности между просмотром и хранимыми процедурами
- 24. Разница между fetchrow_array и fetchall_arrayref при работе с хранимыми процедурами
- 25. С хранимыми процедурами требуется cfSqlType?
- 26. Использование блока с хранимыми процедурами
- 27. LazyLoading с EF и хранимыми процедурами
- 28. Возможная утечка памяти с подготовленными заявлениями?
- 29. Дезинфицирующие входы с подготовленными заявлениями PDO
- 30. Как вы используете memcached с подготовленными заявлениями?