Как реально работает процедура магазина - PullRequest
1 голос
/ 13 ноября 2010

я использую много времени, я знаю разницу между SQL-запросом и SP,

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

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

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

Например,

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

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

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

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

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

просто скажем,

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

Например,

если передать userid 10, тогда spтакже прочитайте записи 10,

, если я пропущу 14, тогда SP снова посмотрит 14 записей, увидит ту же работу, которую выполняет NORMAL SQL QUERY

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

С уважением

Ответы [ 2 ]

3 голосов
/ 13 ноября 2010

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

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

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

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

1 голос
/ 13 ноября 2010

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

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

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

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

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

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