Les index Sql Server incluent la key primaire?

Un de mes collègues a l'printing que lors de l'ajout d'un index à une table dans SQL Server 2008, l'index PK est également ajouté à cet index. Par conséquent, si vous utilisez une key primaire plus large, cette key sera également incluse dans le nouvel index, ce qui augmentera considérablement l'espace disque utilisé au-delà de la pénalité déjà payée pour l'index sur le PK. Je n'avais pas entendu ça auparavant et ma search jusqu'à présent est vide.

Espérons que quelqu'un ici peut me diriger vers des documents pertinents pour confirmer ou infirmer cela. S'il vous plaît?

    Votre collaborateur confond la "key primaire" avec la "key d'index clusterisée" (probablement parce que, par défaut, un PK créé sur un tas sans spécifier le mot key non nonclustered deviendra l'index clusterisé de la table).

    Il est vrai que sur une table avec un index clusterisé, la valeur de la key d'index clusterisée sera ajoutée en tant que colonne (s) incluse (s) à tous les index non cluster pour servir de localisateur de ligne. (bien que la ou les colonnes ne soient pas ajoutées deux fois si elles font déjà partie de la définition d'index non groupée).

    La key d'index clusterisée idéale est

    • unique (Pour agir en tant que localisateur de ligne, il doit être unique – SQL Server appenda un uniquificateur si ce n'est pas le cas)
    • étroit (Comme il est reproduit dans tous les index non groupés)
    • static (Évite d'avoir à mettre à jour la valeur dans plusieurs endroits différents)
    • toujours croissant