Index par défaut sur la clé primaire
Ne le Serveur SQL server créer un index sur les clés primaires par défaut?
Si oui, quel type d'index? Si non quel type d'index est approprié pour les pièces de clé primaire?
J'utilise SQL Server 2008 R2
Merci.
source d'informationauteur Shayan | 2010-07-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez facilement déterminer la première partie de ce pour vous-même
Donne
Edit: Il y a un autre cas, j'aurais mentionné
Donne
À l'égard de la deuxième partie il n'y a pas de règle d'or, cela dépend de votre requête individuelle de la charge de travail, et ce que votre PK est.
Pour la satisfaction individuelle des recherches par clé primaire non l'index cluster sera fine. Si vous faites des requêtes sur les plages de ces serait bien servi par un correspondant d'index cluster, mais une couverture non index cluster peut également suffire.
Vous devez également tenir compte de l'indice de la largeur de l'index cluster en particulier pour ce qui a des répercussions sur l'ensemble de votre index en cluster et de l'effet d'insertion sur la page se divise.
Je vous recommande le livre Requête SQL Server 2008 optimisation des Performances Distillée pour en savoir plus sur les questions de.
Oui. Par défaut, un index cluster unique est créé sur toutes les clés primaires, mais vous pouvez créer un index non cluster unique au lieu de vous comme.
À ce que le choix approprié, je dirais que 80 à 90% des tables que vous créez, vous devez généralement l'index cluster de la clé primaire, mais ce n'est pas toujours le cas.
Vous devez généralement faire l'index cluster quelque chose d'autre si vous n'gamme lourde analyses sur ce "autre chose". Par exemple, si vous avez un synthétique clé primaire*, mais ont une colonne de date que vous avez généralement requête en termes de gamme, vous feriez veulent souvent que la colonne de la date la plus importante de la colonne dans votre index cluster.
*Qui se fait habituellement à l'aide d'un INT colonne d'IDENTITÉ comme le PK sur la table.
Être direct, SQL permet de créer un index sur la CLÉ PRIMAIRE (PK) mot-clé. Cet index est un Index Cluster.
sqlvogel soulève un point important dans son commoent ci-dessus. Vous ne pouvez avoir qu'un "CLUSTER" de l'index. Si vous avez déjà un préalable à la déclaration d'une PK alors votre clé sera non CLUSTER. C'est un peu plus de détails que le défaut de réponse à cette question. Il convient également de noter que PK ne peuvent pas contenir de valeurs NULL.
Noter, cependant, que cet indice peut varier en fonction de la avant de contraintes ou de l'index sur la table. En outre, vous pouvez déclarer les détails de cet indice au moment de la création selon la façon dont vous écrivez le code:
Exemple:
Oui, il construit un index cluster sur la clé primaire par défaut.
Non, il n'est pas dans le cas où il existe déjà un index défini sur la table
Je viens de trouver la même confusion ,vous venez de créer un script suivant pour tester :
Confirmé à la suite le point sur les Index en cluster :
Lorsque nous créons la table avec une Clé Primaire Index Cluster sera créé
par Défaut
Lorsque nous créons une table sans clé Primaire index cluster ne sera pas
créée .
Il y aura Index cluster unique ,car elle dépend de la clé d'Index
De la valeur . Court-circuit des lignes de données dans la table ne peut être que dans l'un
ordre fondé sur la valeur de clé d'Index .