Qu'est-ce que la cardinalité et comment cela affecte-t-il les performances (SQL Server)?

Nous avons une table massive où je dois faire une mise à jour sur une seule ligne. Je ne connais pas la key primaire de la ligne, mais j'ai une valeur varchar unique dans cette table. J'ai aussi la valeur de quelques autres colonnes dans ces tables.

L'exécution de la mise à jour prend plus de trois minutes, et je suppose qu'elle effectue une parsing de table complète.

En regardant les indices sur la table, l'index sur la colonne a une cardinalité de zéro et le nombre de pages de zéro. Il existe d'autres indices avec une cardinalité égale au nombre de lignes de la table (quelques millions) et un nombre de pages de quelques centaines de milliers.

Que signifient réellement ces numbers?

Et en guise de suivi, l'ajout d'une ressortingction qui frappe un index avec une cardinalité plus élevée ou un nombre de pages accélère l'exécution? Ou y at-il autre chose que je peux regarder sur les indices pour en find un qui serait mieux adapté pour find rapidement la ligne que je dois changer.

La cardinalité est le nombre de valeurs uniques pour ce champ dans la table.

Je soupçonne que SQL Server n'a pas réellement créé l'index car il n'y a aucun logging pour cela. Est-il possible que ce champ soit tout NULL , ou y a-t-il un filter qui élimine tous les loggings comme WHERE 1=0 ?

Un bon sharepoint départ serait d'exécuter la mise à jour et de capturer le plan d'exécution réel.

MODIFIER:

Index Type 3 est un XML Index .

S'il vous plaît voir cette page pour reference.

La structure des index XML est assez différente. Je ne les utilise pas moi-même, mais d'après une lecture rapide, il semble que cela crée une série d'index supplémentaires qui ne sont pas accessibles directement par les users mais qui sont utilisés par le moteur de search.