Tenir compte le tableau suivant dans SQL Server 2008:CLUSTERED vs indice couvrant
LanguageCode varchar(10)
Language nvarchar(50)
LanguageCode participe à des relations, donc je ne peux pas créer un index de clé primaire qui comprend les deux colonnes (LanguageCode, langue).
Si je mets une clé clustered primaire sur LanguageCode, bien sûr, je ne peux pas inclure la langue dans l'index (index de couverture). Cela signifie que je vais devoir créer un deuxième index pour la langue, ou courir le risque d'avoir des doublons dedans (plus forcer un balayage de table pour récupérer sa valeur).
En outre, la documentation de MS (ainsi que des experts en la matière) indiquent qu'un tableau devrait idéalement avoir un index en cluster.
Dans ce cas, un index de couverture non groupé (LanguageCode, Language) garantirait non seulement que la langue est unique, mais éviterait l'analyse de la table. Cependant, il n'y aurait pas d'index clusterisé "idéal".
Est-ce un de ces cas où l'absence d'index clusterisé est idéale?
Modifier en fonction des commentaires:
La seule question que je veux courir est:
SELECT Language, LanguageCode FROM Languages where Language="EN"
votre table de langue participera-t-elle aux jointures? – Quassnoi
@Quassnoi oui - il se joindra à LanguageCode (correspondant à sa relation) – IamIC