Сведения о вопросе

Martincow

13:05, 19th August, 2020

Теги

sql-server   nocount    

Каковы преимущества и недостатки отключения NOCOUNT в запросах сервера SQL?

Просмотров: 479   Ответов: 7

Каковы преимущества и недостатки отключения NOCOUNT в запросах сервера SQL?



  Сведения об ответе

repe

04:38, 17th August, 2020

От SQL бол:

SET NOCOUNT ON предотвращает отправку DONE_IN_PROC сообщения клиенту для каждого оператора в сохраненном виде процедура. Для хранимых процедур, которые содержат несколько операторов, которые не делают возвращает много фактических данных, устанавливая SET NOCOUNT до ON может обеспечить значительная производительность boost, потому что сетевой трафик значительно сокращается.

Смотрите http://msdn.microsoft.com/en-us/library/ms189837.aspx для получения более подробной информации.
Кроме того, эта статья на SQLServerCentral отлично подходит на эту тему:
Влияние на производительность NOCOUNT


  Сведения об ответе

qwerty101

03:28, 3rd August, 2020

И дело не только в снижении сетевого трафика. Существует внутренний сервер от boost до SQL, поскольку план выполнения может быть оптимизирован за счет сокращения дополнительного запроса, чтобы выяснить, сколько строк было затронуто.


  Сведения об ответе

LAST

15:40, 16th August, 2020

Он просто останавливает сообщение, которое показывает # строк, выполненных для того, чтобы быть sent/displayed,, что обеспечивает преимущество производительности , особенно если у вас есть много операторов, которые будут возвращать сообщение. Это повышает производительность, так как меньше данных передается по сети (между сервером sql и передним концом).

Подробнее на BOL: SET NOCOUNT


  Сведения об ответе

PROGA

20:14, 15th August, 2020

Я всегда устанавливаю его в ON по причинам выше, но если у вас есть более 1 результирующего набора в вашем proc это может испортить клиентский код


  Сведения об ответе

$DOLLAR

20:12, 4th August, 2020

Мне лично нравится включать NOCOUNT для запросов, которые запускаются вручную, и использовать много операторов Print для вывода сообщений отладки. Таким образом, ваш результат будет выглядеть менее похожим:

Updating usernames
(287 rows updated)

Done
Updating passwords
(287 rows updated)

Done
Doing the next thing
(1127 rows updated)

Done

И еще больше похоже

Updating usernames
Done

Updating passwords
Done

Doing the next thing
Done

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


  Сведения об ответе

PHPH

11:48, 8th August, 2020

SET NOCOUNT ON-Это оператор oneline, Sql сервер отправляет сообщение обратно в client.this выполняется для каждого процесса (т. е.. выбрать,вставить,обновить, удалить).если вы избегаете этого сообщения мы можем улучшить общую производительность для нашей базы данных а также уменьшить сетевой трафик

Для EX:

объявить таблицу @a (id int)

установить nocount on

вставить @a выбрать 1 соединение выбрать 2

установить nocount off


  Сведения об ответе

9090

11:26, 7th August, 2020

Останавливает сообщение, указывающее количество строк, на которые влияет инструкция Transact-SQL, возвращаемое как часть результатов.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться