web-dev-qa-db-fra.com

Exécuter une requête mais ne pas retourner les résultats au client

Je teste la performance une requête et essaye de corriger un problème de reniflement des paramètres. Basé sur le paramètre, il renvoie parfois 3 rangées et il retourne parfois plus de 5 000 rangées. Je tiens à tester l'impact du changement que je propose du temps d'exécution. Mais puisque le nombre de lignes retournées est si large, le temps d'exécution est asymétrique car il prend en compte le temps pris par le client pour consommer les lignes. Je souhaite supprimer le temps nécessaire pour renvoyer les rangées et la jute mesurez le temps d'exécution réel sur le serveur.

J'ai regardé SET FMTONLY ON Mais il semble que cela ne gère pas la requête. J'ai également essayé de jeter les lignes dans une table/tentable, mais cela ajoute des coûts à l'estimation et provoque le changement de plan dans une direction qui n'est pas ce que je veux.

Toute autre façon que nous puissions y parvenir?

Acclamations

1
jesijesi

Dan Guzman : Je pense que vous devrez consommer les résultats dans un processus SQLCLR du côté serveur. Bien qu'il y aura des frais généraux, ce sera moins sans le réseau IO.

Personnellement, j'inclurais le temps nécessaire pour consommer les résultats en tant que temps écoulé et utiliser d'autres métriques telles que des lectures logiques et de la CPU pour mesurer l'utilisation des ressources.

0
user195591

Si vous souhaitez supprimer les lignes de l'ensemble de résultats, vous devriez éventuellement essayer Discard Results After Execution au SSMS (SQL Server Management Studio), comme indiqué ci-dessous:

Discard Results

Vous pouvez toujours activer les statistiques IO======= et pouvez voir le nombre de pages lire ainsi que le temps consommé lors de l'exécution de la requête en question ci-dessous:

enter image description here

Une question similaire est discutée dans le fil ci-dessous:

https://stackoverflow.com/questions/6386587/how-to-execute-sql-query-without-Displaying-Results

Une note de plus ici à propos de SET FMTONLY ON que cela ne devrait pas être utilisé et a été remplacé par les éléments suivants:

  • sp_describe_first_result_set (transact-sql)
  • sp_describe_undeclared_paramètres (transact-sql)
  • sys.dm_exec_describe_first_result_set (transact-sql)
  • sys.dm_exec_describe_first_result_set_for_Object (transact-sql)

comme décrit sur MS Site .

J'espère ci-dessus aide.

0
Learning_DBAdmin