Dans SQL Server, devrais-je créer un index pour une colonne d'identité ou est-il créé automatiquement?
Je crois que quand je crée une identity
colonne, il est indexée automatiquement, mais je ne suis pas sûr à 100%.
Dois-je créer un index pour une identity
colonne, ou est-il créé automatiquement?
source d'informationauteur willvv
Vous devez vous connecter pour publier un commentaire.
Comme une pratique générale, vous devez créer un index unique sur votre colonne d'identité, ce qui accélère les recherches.
Habituellement, vous souhaitez que votre identité colonnes à 'index cluster' (
Id int identity primary key
est le raccourci de notation), ce qui signifie table est jeté sur le disque dans le même ordre de votre colonne d'identité. Cela optimise pour les insertions, comme la page qui doit être inséré dans tend à être dans la mémoire. Dans certains cas, lorsque vous faites des recherches allaient très souvent sur d'autres données dans le tableau, vous pouvez envisager de clustering autres colonnes au lieu de cela, comme SQL Server vous permet uniquement un index cluster par table.Si vous créez une colonne avec un
PRIMARY KEY
contrainte, un index cluster est créé par défaut (en supposant que c'est une nouvelle table et aucun indice est déjà défini).Être un
IDENTITY
domaine n'a rien à faire avec elle.Donc, pour répondre à votre question, si vous allez à la requête de tri avec ce domaine et il n'est pas une clé primaire, vous devez définir un index sur (règle de pouce, toujours tester votre scénario).
Par défaut, votre colonne de la clé primaire(s) sera effectué dans un index cluster; c'est un indice qui n'est pas séparée de données, mais au lieu de cela, les données sont ordonnées dans le tableau par des indices de valeurs.
Je dis "par défaut", parce que vous pouvez changer l'index cluster à un autre champ, si vous voulez. Si vous avez choisi une bonne valeur d'identité pour votre clé primaire, vous aurez presque jamais l'envie de changer cela, cependant.