J'ai testé mon application sur une base de données SQL Server 2005, et j'essaie d'obtenir une première image des performances des requêtes en utilisant sys.dm_exec_query_stats.
Problème : il y a une requête particulière qui m'intéresse, parce que total_elapsed_time et last_elapsed_time sont tous les deux des nombres importants. Lorsque j'invoque cette requête dans mon application (qui s'exécute avec succès), puis que je rafraîchis ma vue des statistiques, je constate que
1) execution_count a été incrémenté (attendu) 2) last_execution_time a été mis à jour (attendu) 3) last_elapsed_time est toujours une grande valeur (pas attendu - j'attendais une nouvelle valeur) 4) total_elapsed_time est inchangé (contradiction ?)
Si last_elapsed_time se réfère à l'exécution qui s'est produite @ last_execution_time, alors le total_elapsed_time devrait avoir augmenté ?
Cette documentation : http://msdn.microsoft.com/en-us/library/ms189741 (SQL.90).aspx m'indique que last_execution_time est la dernière fois que le plan a été exécuté, et que last_elapsed_time provient du "plan le plus récemment exécuté", mais ne m'explique pas pourquoi ils peuvent être différents.
La requête elle-même n'est pas compliquée (SELECT/WHERE/ORDER BY - paramètres apparaissant dans la clause where, mais pas d'opérations astucieuses), la table contient peut-être 25 lignes à l'heure actuelle.
Questions : 1) Quelle est la relation réelle entre execution_count, last_execution_time, et last_elapsed_time ? 2) Où se trouve la documentation de cette relation (manuel, livre tiers, blog, ticket de bogue, tablettes de pierre...) ?