Les statistiques, c’est ce qui va être utilisé par un plan d’exécution pour estimer le nombre de lignes dans une requête par rapport aux valeurs qu’on passe, par exemple, dans la clause WHERE, ce qu’on appelle l’estimation de la cardinalité du résultat, c’est-à-dire du nombre de lignes.

Mais que se passe-t-il si notre clause WHERE contient un LIKE ? Par exemple :

SELECT *
FROM Contact.Contact
WHERE Nom LIKE ‘%imo%’

Pour cette requête, faut-il estimer la cardinalité ? Vous pourriez dire : à quoi bon un estimer la cardinalité, on va scanner la table. Oui, mais on pourrait avoir envie de scanner plutôt un index. Et pour faire ce choix, entre scanner la table ou un index, il faut estimer la cardinalité du résultat.

Mais comment faire pour estimer ? SQL Server calcule des statistiques de chaînes. En cas de VARCHAR, SQL Server va prendre les 80 premiers caractères et va utiliser un algorithme statistique pour reconnaître le nombre de valeurs qui peuvent se trouver à l’intérieur. C’est assez intelligent et ça marche plutôt bien. Je vous le montre dans cette vidéo.

Actuces et tutoriels SQL Server en français, pour SQL Server 2017, SQL Server 2016, et toutes versions.
Par Rudi Bruchez
https://www.linkedin.com/in/rudibruchez/
www.pachadata.com

Découvrir les statistiques de chaînes dans SQL Server