J'ai une situation que je ne peux pas comprendre. Mon plan d'exécution SQL Server me dit que j'ai des statistiques manquantes sur la table, mais les statistiques sont déjà créées:
Mais si nous regardons le tableau, nous verrons qu'il existe une statistique qui a été créée automatiquement:
Quelqu'un peut-il aider à comprendre comment cela peut être?
Les statistiques Auto_Update et Auto_Create sont activées sur la base de données actuelle.
J'utilise SQL Server 2014.
L'avertissement ne correspond pas toujours aux statistiques manquantes à une seule colonne .
Il n'y a pas de moyen facile de déterminer avec précision la statistique exacte que l'optimiseur a recherchée et n'a pas trouvée dans tous les cas, mais c'est presque toujours une statistique multi-colonnes qui fournirait des informations de corrélation à travers l'égalité multiple prédicats dans la requête.
Peut-être que dans votre cas, cela correspond exactement aux prédicats du filtre suivant l'analyse où l'avertissement apparaît.
Ce serait bien si SQL Server signalait toutes les colonnes pour l'avertissement de "statistique manquante", mais ce n'est malheureusement pas ainsi que cela fonctionne aujourd'hui.
Une certaine quantité d'essais et d'erreurs peut être nécessaire pour identifier la statistique à plusieurs colonnes que vous devez créer pour supprimer l'avertissement. Notez que les statistiques multi-colonnes ne peuvent pas être créées automatiquement. Malgré l'avertissement, vous pouvez ou non trouver la qualité de l'estimation s'améliore même si la statistique manquante est fournie.
Puisqu'il semble clair qu'une statistique existe déjà pour la colonne particulière, j'offre deux possibilités:
DEV
dans le nom, il est donc possible que dans un cas vous regardiez dev et dans un autre vous ne soyez pas.Veuillez valider que la réponse simple (1) n'est pas le problème et essayez d'émettre la même requête avec OPTION (RECOMPILE)
pour confirmer ou exclure (2).
Je viens de remarquer que lorsque vous obtenez de tels avertissements sur les statistiques, si vous exécutez votre requête ou procédure avec les paramètres ci-dessous:
SET SHOWPLAN_ALL ON
vous pouvez voir quelles sont les statistiques manquantes:
et en utilisant les scripts ici vous pouvez voir quelles statistiques sont actuellement en place, et si elles manquent, vous pouvez les ajouter.