SET NOCOUNT ON est une instruction set qui empêche le message d'indiquer le nombre de lignes affectées par les instructions de requête T-SQL. Ceci est utilisé dans les procédures stockées et les déclencheurs pour éviter d'afficher le message de lignes affecté. L'utilisation de SET NOCOUNT ON au sein d'une procédure stockée peut améliorer considérablement les performances de la procédure stockée.
SET NOCOUNT ON: Cela empêche l'affichage du message contenant le nombre de lignes affectées.
RÉGLER NOCOUNT: Ceci indique le nombre de lignes affectées dans une fenêtre de message.
SET NOCOUNT ON empêche l'envoi de messages DONE_IN_PROC au client pour chaque instruction d'une procédure stockée.
Définir SET NOCOUNT sur ON pour les procédures stockées contenant plusieurs instructions ne renvoyant pas beaucoup de données réelles ou pour les procédures contenant des boucles Transact-SQL peut améliorer considérablement les performances, car le trafic réseau est considérablement réduit.
SET NOCOUNT ON / OFF avec un exemple
SET NOCOUNT ON SELECT TOP 10 * FROM sys.procedures; SET NOCOUNT OFF SELECT TOP 10 * FROM sys.procedures;
L'utilisation de SET NOCOUNT ON dans les premières instructions T-SQL empêche d'afficher le nombre de lignes affectées.
SET NOCOUNT avec la fonction @@ ROWCOUNT
Cela n'a aucun impact sur la fonction @@ Rowcount qui indique le nombre de lignes affectées dans un lot.
SET NOCOUNT ON Declare @Temp Table (Number INT); INSERT INTO @Temp Values (1), (2), (3), (4); SELECT @@ ROWCOUNT comme NoOfRowsAffected; RÉGLER NOCOUNT
L'utilisation de la fonction @@ ROWCOUNT dans SET NOCOUNT ON ne réinitialise pas la valeur @@ ROWCOUNT. La colonne NoOfRowsAffected montre que quatre lignes ont été affectées par la précédente instruction INSERT.
Utilisation de SET NOCOUNT ON / OFF dans une procédure stockée
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO PROCÉDURE DE CRÉATION ABC_INSERT_DATA AS BEGIN - SET NOCOUNT ON ajouté pour empêcher les ensembles de résultats supplémentaires d'interférer avec les instructions SELECT. SET NOCOUNT ON; Declare @Temp Table (Number INT); INSERT INTO @Temp Values (1), (2), (3), (4); SELECT * FROM @Temp; FIN GO
Exécution de la procédure stockée ci-dessus
EXEC ABC_INSERT_DATA
Vous pouvez voir dans la capture d'écran ci-dessus que la procédure stockée exécutée n'affiche pas le message du nombre de lignes affectées. L'utilisation de SET NOCOUNT ON dans les procédures stockées est recommandée comme meilleure pratique pour l'optimisation des performances dans SQL Server.
Vous pouvez parcourir nos articles d'archives SQL Server pour plus d'informations utiles.