2010-11-13 5 views
1

я привык много времени, я знаю различия между SQL запросами и зром,Как на самом деле процедура магазина работает

SQL query will be compiled everytime it is executed. 
Stored procedures are compiled only once when they are 
executed for the first time. 

Это вопрос общей базы данных

Но один большое сомнение,

Например,

одна динамическая работа, то есть я передаю идентификатор пользователя в SP и sp, вернет имя пользователя, пароль, полную информацию,

Так что для этого сценария запрос должен выполнить еще раз знать, так что является необходимым СП вместо SQL QUERY,

Пожалуйста, удалите это сомнение,

Привет спасибо за все ваши обновления,

, но я не хочу, преимущество, сравнение,

просто сказать,

Как зр выполнения, в то время как мы идем с динамическими работами,

Например,

если проход Идентификатор_пользователя 10, то зр также читать записи 10,

, если я прохожу 14 затем, SP снова посмотрите на 14 записей, увидеть это та же работа NORMAL SQL QUERY

делает , но в то время выполнения и выборки, так почему я должен идти на зр,

с уважением

ответ

3

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

Простые SQL-запросы, с другой стороны, передаются на сервер и скомпилированы каждый раз, когда вы их используете.

Таким образом, передача огромного запроса (вместо простой команды «выполнить процедуру») и компиляция создает служебные данные, которых можно избежать с помощью хранимой процедуры.

MySQL, как и другие РСУБД, имеет кэш запросов. Но это позволяет избежать компиляции и только в том случае, если запрос в точности совпадает с ранее выполненным запросом, что означает, что кеш не используется, если вы выполняете 2 раза один и тот же запрос с разными значениями в предложении where, например.

+0

MySQL также требует, чтобы в таблицу не вносились изменения (так что обновление/вставки не было), поскольку последний запрос выполнялся для использования кеша. – speshak

+0

добавьте правильно закодированную хранимая процедуру (не цитируйте мне примеры WTF), которые могут предотвратить атаки на SQL-инъекции, и, что более важно, они обеспечивают лучшую безопасность, скрывая детали от пользователя приложения и ограничивая пользователя приложения, чтобы освобождать только разрешения от выбора выбора, delete, truncate, drops - eeek список можно продолжить. В заключительной заметке вы можете инкапсулировать многие операторы sql внутри одного sproc и таким образом уменьшить накладные расходы на взаимные поездки на стороне нескольких серверов. –

1

Я не вижу причины для хранимой процедуры просто запрашивать все детали пользователя.

Хранимые процедуры - это функциональный код, который вы выполняете на сервере базы данных. Я могу придумать три причины, по которым вы их использовали:

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

Только 1. будет оправданным из вашего вопроса. Я бы рекомендовал придерживаться SQL.

ОБНОВЛЕНИЕ. Новая информация, предоставленная вами, по-моему, не оправдывает хранимые процедуры. Запрос, который возвращает 14 записей, является обычным.

+0

4. При использовании разных приложений и доступа к одним и тем же данным из каждого. – Patrick

+0

, пожалуйста, chk мое обновление – Bharanikumar

+0

У вас может быть несколько приложений для совместного использования данных без сохраненных процедур. Вам нужно беспокоиться о ACID и уровне изоляции. – duffymo

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