Когда хранимые процедуры более производительны, чем запросы из приложения? - PullRequest
0 голосов
/ 02 ноября 2010

Есть ли когда-нибудь выигрыш в производительности хранимых процедур, которого невозможно достичь без них?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2010

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

Большой запрос из приложения должен передаваться по проводной связи, а затем анализироваться сервером SQL.

Используя хранимую процедуру, объем передаваемых данных может быть уменьшен, и нет необходимости выполнять синтаксический анализ при каждом вызове процедуры.

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

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

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

0 голосов
/ 02 ноября 2010

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

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

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