Les statistiques dans SQL Server calculent ce qu’on appelle un vecteur de densité. Il est important de la comprendre pour améliorer les performances de ses requêtes, notamment dans les procédures stockées.
Les statistiques sont utilisées par l’optimiseur de SQL Server pour déterminer le nombre de lignes estimées quand on fait une requête. Cette estimation est appelée l’estimation de la cardinalité du résultat, c’est-à-dire le nombre de lignes.
Dans chaque table, nous avons des statistiques, qui sont calculées notamment sur les index. Quand vous affichez les détails des statistiques dans SQL Server Management Studio, vous voyez le résultat d’une vieille commande qui s’appelle DBCC SHOW_STATISTICS, et qui montre le détail des statistiques. Ce sont des informations qui sont stockées dans une table système.
Cet affichage comporte trois parties. Un entête qui indique, par exemple, quand est-ce que la mise à jour de ces statistiques a été faite dans SQL Server. On a la densité, ce qu’on appelle le vecteur de densité, et puis on a un histogramme.
Lorsqu’on cherche quelque chose de précis, on peut regarder directement dans l’histogramme. Cela permet d’obtenir une estimation précise. Mais il existe des cas où il n’est pas possible d’utiliser l’histogramme. Par exemple, si vous utilisez une variable dans du code Transact-SQL. Dans ce cas, le moteur d’optimisation n’est pas capable de prendre la valeur de la variable et de la substituer pour utiliser l’histogramme. Il va utiliser le vecteur de densité.
La densité dans les statistiques de SQL Server est une représentation du nombre de valeurs distinctes dans la table. On prend 1 divisé par le COUNT des valeurs distinctes de la colonne. À partir de ça, lorsque SQL Server ne sait pas comment estimer précisément une cardinalité, il prend ce vecteur de densité, qu’il utilise pour diviser le COUNT des valeurs dans la table.

Qu’est-ce que le vecteur de densité dans SQL Server ?