Les bases de données ont beaucoup de jargon, et la cardinalité est l’un de ces mots que les personnes expérimentées ont tendance à oublier qu’elles ne connaissaient pas une fois. Mais si vous ne le savez pas — et il faut un certain temps pour vraiment se sentir à l’aise avec la cardinalité — c’est super déroutant quand le DBA le laisse tomber au milieu d’une phrase sans ralentir! N’ayez crainte: Je vous ai, comme on dit.La cardinalité signifie deux choses dans les bases de données. Pour nos besoins, l’un compte beaucoup plus que l’autre. Faisons d’abord le simple, puis creusons dans celui qui compte pour les performances de la requête.La définition de la cardinalité qui compte beaucoup pour les performances des requêtes est la cardinalité des données. Il s’agit du nombre de valeurs distinctes dans une colonne.La première signification de la cardinalité est lorsque vous concevez la base de données — ce qu’on appelle la modélisation des données. En ce sens, la cardinalité signifie si une relation est un à un, plusieurs à un ou plusieurs à plusieurs. Donc, vous parlez vraiment de la cardinalité de la relation.La définition officielle du dictionnaire de cardinalité, hors base de données, est mathématique: le nombre de valeurs dans un ensemble. Lorsqu’elle est appliquée aux bases de données, la signification est un peu différente: c’est le nombre de valeurs distinctes dans une colonne de table, par rapport au nombre de lignes de la table. Les valeurs répétées dans la colonne ne comptent pas.Nous ne parlons généralement pas de la cardinalité comme d’un nombre, cependant. Il est plus courant de parler simplement de cardinalité « élevée” et « faible”. Beaucoup de valeurs distinctes sont une cardinalité élevée; beaucoup de valeurs répétées sont une cardinalité faible.Imaginez un tableau de description de produit dans une base de données de commerce électronique:La colonne ProductID
va être très cardinale car c’est probablement la clé primaire de cette table, donc c’est totalement unique. S’il y a mille lignes dans la table, il y aura mille valeurs différentes ProductID
. La colonne Category
aura beaucoup de répétition, et ce sera une cardinalité faible ou moyenne: peut-être 50 ou 100 valeurs différentes Category
Name
est probablement une cardinalité élevée, à moins qu’il n’y ait plus dans ce tableau qu’on ne le voit (comme plusieurs lignes pour différentes couleurs de produit et d’autres variations).La cardinalité affecte beaucoup les performances, car elle influence le plan d’exécution de la requête. Le planificateur examinera les statistiques de colonnes et les utilisera pour déterminer le nombre de valeurs qu’une requête est susceptible de correspondre, entre autres. Selon ce qu’il trouve, il peut utiliser différents plans d’exécution de requête pour essayer d’obtenir les meilleures performances. Mais c’est un sujet pour un autre article de blog, car il faut un peu de travail pour explain.So maintenant, la prochaine fois que quelqu’un laisse tomber « cardinalité élevée” dans une phrase sans s’arrêter, vous savez qu’ils signifient vraiment « beaucoup de valeurs différentes. »Et là, vous l’avez!
Maybaygiare.org
Blog Network
Maybaygiare.org
Blog Network