J'essayais de tester la différence de performance entre l'insertion directe dans une table et l'insertion dans une vue dans une base de données différente qui pointe vers la table. J'ai été choqué de voir qu'une boucle WHILE avec 10.000 inserts dans une table simple a pris 3 secondes mais contre la vue cela a pris 30 secondes. Comme je l'ai étudié, j'ai trouvé que si je basculais Windows dans SSMS, la performance de la vue était la même que celle de la table comme je pensais qu'il aurait dû l'être. J'ai ensuite basculé DB dans la fenêtre de vue à la table DB et inséré là-bas et il était lent lorsque vous allez directement contre la table.Différences de performances énormes entre les connexions
Ceci m'a montré l'idée qu'il y avait une différence dans les connexions. Il s'agissait de différents onglets dans SSMS, l'un créé de l'autre avec -N. Je n'ai émis aucune commande SET autre que SET NOCOUNT ON (dans les deux fenêtres) et toutes les statistiques, les plans de requête, etc. ont été désactivés.
Lorsque j'ai exécuté SQL Profiler pour examiner les connexions, elles avaient des paramètres identiques. La différence de performance était cependant constante à 100%.
J'ai vérifié qu'aucune transaction n'était ouverte dans les deux connexions.
J'ai essayé d'ouvrir une autre instance de SSMS et je ne peux pas dupliquer les performances lentes (bien que cela se produise dans deux des trois de mes onglets dans la première instance de SSMS).
Tout cela est sur un serveur local. Je vais devoir le fermer dans environ une heure et je ne sais pas si je peux reproduire ce problème, donc j'espère que je peux obtenir quelques suggestions avant alors :)
D'autres idées sur ce que la différence pourrait être?
Comment SQL Server prend-il en compte la différence de temps? Avez-vous essayé d'inclure des plans d'exécution réels pour voir s'il y a une différence et regarder les résultats SET STATISTICS IO et SET STATISTICS TIME? –
Juste un petit commentaire: si c'est difficile/impossible à reproduire, alors je ne pense pas à autre chose. – NotMe
Est-il possible qu'il y ait quelque chose dans la base de données avec la vue, provoquant une requête supplémentaire sur une table différente dans la même base de données, avant qu'elle n'atteigne l'insertion cible? – Nate