La cardinalité joue-t-elle un rôle dans les index composites? Si oui, quoi?Stratégies concernant les index composites et la cardinalité
je courais une requête qui unissait sur deux colonnes et utilisé ce que je pensais être un indice de sup-optimal, il me fait repenser la façon dont je conçois les index ...
Disons que nous avions un tableau qui répertorie toutes les villes aux États-Unis. Mon premier instinct est là pour faire un index ordonné en clusters sur (État ->Ville) de sorte que si jamais nous avons besoin d'interroger tous les Villes pour un Etat , il serait probablement cibler cet indice. En outre, il serait un bon indice pour les requêtes qui spécifient à la fois Ville et État (ici, nous pouvons supposer que Ville, État est une paire unique).
J'ai couru dans une requête qui se joint essentiellement d'une table qui a donné une liste de villes spéciales. Il s'agit donc d'un sous-ensemble de la table Cities. Je spécifie la jointure sur Special.City et Special.State, mais ce qui m'a surpris ici, c'est qu'il a utilisé l'index de clé primaire (créé automatiquement par le serveur SQL) de la table Cities au lieu de l'index cluster J'ai fait. Comment venir?
J'ai aussi entendu dire que de bons indices ont une grande cardinalité ...
Je me demande si l'index ordonné en clusters (ou un autre, l'indice distinct) aurait dû être créé (Ville -> État) (Notez la différence dans l'ordre) parce que (nous supposons) juste Ville a cardinalité élevée et est beaucoup plus discriminante que L'état est dans la première série de seaux. Cela a toujours été ma règle de toujours créer des index cluster sur parent-> child dans les relations parent-enfant, comme dans Cities and States, pour bénéficier des requêtes qui ciblent des enfants spécifiques et des requêtes qui récupèrent tous les enfants pour un parent donné. Dois-je repenser quelque chose ici?
test informel montre qu'un index (Ville ->State) a été légèrement moins cher que l'indice PK.
C'est hilarant! Ce gars a un blog entier dédié à l'indexation? C'est fou. Merci beaucoup! –
@Mark: pas seulement les index. Lisez ce qu'il a fait: http://blogs.msdn.com/craigfr/about.aspx – gbn
Dans votre exemple, Son.GrandDadID n'est-il pas implicite dans la relation donnée par DadID? –