2010-07-08 3 views
8

J'ai une table avec une colonne IDENTITY comme clé primaire (une colonne d'ID classique). SQL Server crée automatiquement un index cluster pour cette clé primaire.Index en cluster composite dans SQL Server

Ma question est la suivante:

  • Puis-je avoir un seul composite unique INDEX CLUSTERED avec plusieurs colonnes?

Si oui, comment puis-je supprimer l'index cluster par défaut et en recréer un nouveau avec ces attributs.

Merci pour votre soutien

Répondre

14

Oui, vous ne pouvez avoir un seul index cluster par table - les données sont disposées physiquement par cet indice, donc vous ne pouvez pas avoir plus d'un.

Je ne conseillerais cependant pas d'utiliser un index clusterisé composite. Pourquoi? Parce que l'index cluster doit toujours être:

  • aussi petit que possible - INT avec 4 octets est parfait
  • stable - ne jamais changer, de sorte que vous n'avez pas mises à jour ondulant à travers tous vos indices
  • unique - sinon, SQL Server devra « uniquify » vos entrées avec des valeurs artifical 4 octets
  • optimale serait: toujours croissante

INT IDENTITY est parfait comme index ordonné en clusters - je vous conseille de le garder THA t chemin. La colonne indexée en cluster (ou ensemble de colonnes) est également ajoutée à chaque entrée de chaque index non clusterisé de cette même table. Ainsi, si vous créez un index clusterisé volumineux, 20, 50 octets ou plus, vous commencer à perdre beaucoup d'espace - sur le disque et dans la mémoire de votre serveur, ce qui dégrade généralement les performances de votre système.

Pour tout savoir sur les indices clustered et ce qu'ils devraient être de bons indices ici en cluster:

+1

Merci pour votre temps! – GibboK

Questions connexes