web-dev-qa-db-fra.com

L'ordre des colonnes dans un index de colonne est-il important?

J'ai une table avec ~ 200 millions de rangées et ~ 15 colonnes dedans. Je prévois de créer un index COLUMNSTORE sur ma table.

Y aura-t-il une modification de la performance basée sur l'ordre des colonnes que j'utilise dans l'indice de colonne? Si oui, quelle est la logique derrière elle?

12

Non, l'ordre n'a pas d'importance. Chaque colonne est considérée comme individuellement.

à partir de l'équipe SQL Server (accent ajouté):

En règle générale, vous voudrez mettre toutes les colonnes de votre table dans l'index de colonne. Peu importe quel ordre vous énumérez les colonnes car un indice de colonne n'a pas de clé comme un indice B-Tree. En interne, les données seront ré-ordonnées automatiquement pour obtenir la meilleure compression.

15
Aaron Bertrand

l'ordre n'a pas d'importance, que signifie que si vous devez inclure toutes les colonnes de la table de base de l'index de colonne de colonne - more via ma réponse précédente à cette question ici

2
Lynn Langit

Il existe une excellente réponse existante par Aaron de 2012, pour développer ce ...

Avec SQL 2014+ Vous avez des index de colonne clustered disponibles. Lors de la création d'un indice de colonne en cluster, il n'y a pas de sélection de colonne ou d'options de commande disponibles. Index de colonne Columnstore décrit

0
James Jenkins

Dans SQL Server 2012-2016, vous avez le concept d'élimination du segment ( http://social.technet.microsoft.com/wiki/contents/articles/5651.Accèstanding-se-elimination.aspx ) et Vous pouvez réellement forcer l'ordre d'au moins 1 colonne (plus 1 extra dans chacune de la partition).

Considérez l'article suivant qui explique le chargement des données pour une meilleure élimination du segment: chargement de données pour une meilleure élimination du segment

0
Niko Neugebuer