Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SET NOCOUNT ON uso


Ok, agora eu fiz minha pesquisa, aqui está o negócio:

No protocolo TDS, SET NOCOUNT ON salva apenas 9 bytes por consulta, enquanto o texto "SET NOCOUNT ON" em si é de 14 bytes. Eu costumava pensar que 123 row(s) affected foi retornado do servidor em texto simples em um pacote de rede separado, mas esse não é o caso. Na verdade, é uma pequena estrutura chamada DONE_IN_PROC embutido na resposta. Não é um pacote de rede separado, portanto, nenhuma viagem de ida e volta é desperdiçada.

Acho que você pode manter o comportamento de contagem padrão quase sempre sem se preocupar com o desempenho. No entanto, existem alguns casos em que calcular o número de linhas antecipadamente afetaria o desempenho, como um cursor somente para frente. Nesse caso, NOCOUNT pode ser uma necessidade. Fora isso, não há absolutamente nenhuma necessidade de seguir o lema "use NOCOUNT sempre que possível".

Aqui está uma análise muito detalhada sobre a insignificância de SET NOCOUNT configuração:http://daleburnett.com/2014/01/everything-ever-wanted-know-set-nocount/