Partager via


Création d'index non-cluster

Vous pouvez créer plusieurs index non-cluster sur une table ou une vue indexée. Généralement, les index non-cluster sont créés pour améliorer les performances des requêtes récurrentes non couvertes par l'index cluster.

Mises en œuvre classiques

Les index non-cluster sont mis en œuvre comme ceci :

  • Contraintes PRIMARY KEY et UNIQUE
    Lorsque vous créez une contrainte PRIMARY KEY, un index cluster unique est automatiquement généré sur la ou les colonnes si aucun index cluster n'existe déjà sur la table et que vous ne spécifiez pas un index non-cluster unique. La colonne de clé primaire ne peut pas contenir de valeurs NULL.
    Lorsque vous créez une contrainte UNIQUE, un index non-cluster unique est créé pour appliquer par défaut une contrainte UNIQUE. Vous pouvez spécifier un index cluster unique si la table n'a pas encore d'index cluster. Pour plus d'informations, consultez Contraintes PRIMARY KEY et Contraintes UNIQUE.
  • Index indépendant d'une contrainte
    Par défaut, un index non-cluster est créé si l'option CLUSTERED n'est pas spécifiée. Le nombre maximal d'index non-cluster par table est de 249. Ce nombre comprend tous les index créés par les contraintes PRIMARY KEY ou UNIQUE, et exclut les index XML.
  • Index non-cluster sur une vue indexée
    Une fois qu'un index cluster unique a été créé sur une vue, vous pouvez créer des index non-cluster. Pour plus d'informations, consultez Création de vues indexées.

Index avec colonnes incluses

Lorsque vous créez un index non-cluster pour les besoins d'une requête, vous pouvez inclure des colonnes non clés dans la définition de l'index afin de couvrir les colonnes qui, dans la requête, ne sont pas utilisées comme colonnes de recherche principales. Cette méthode améliore les performances car elle permet à l'optimiseur de requête de retrouver toutes les données dont il a besoin dans l'index, sans devoir accéder à la table ou à l'index cluster. Pour plus d'informations, consultez Index avec colonnes incluses.

Espace disque requis

Pour plus d'informations sur les besoins en espace disque des index non-cluster, consultez Détermination de l'espace disque requis par les index.

Considérations relatives aux performances

Bien qu'il soit important que l'index contienne toutes les colonnes utilisées par la requête, évitez d'ajouter des colonnes sans raison. Un nombre trop élevé de colonnes d'index, clés et non-clés, peut avoir un impact négatif en termes de performances :

  • Moins de lignes d'index par page, augmentation des E/S disque et perte d'efficacité du cache.
  • Plus d'espace disque nécessaire pour stocker l'index.
  • La maintenance de l'index peut augmenter le temps nécessaire pour effectuer des modifications, des insertions, des mises à jour ou des suppressions dans la table ou la vue indexée sous-jacentes.

Avant de créer un index non-cluster, vérifiez que les avantages qu'il vous apporte (requêtes plus performantes) compensent les pertes de performances qu'il suppose (modifications plus difficiles et espace disque requis plus important). Pour plus d'informations sur l'évaluation des performances des requêtes, consultez Analyse de requêtes.

Pour créer une contrainte PRIMARY KEY ou UNIQUE au moment de la création d'une table

CREATE TABLE (Transact-SQL)

Pour créer une contrainte PRIMARY KEY ou UNIQUE sur une table existante

ALTER TABLE (Transact-SQL)

Pour créer un index

CREATE INDEX (Transact-SQL)

Voir aussi

Concepts

Création d'index (Moteur de base de données)
Indications pour la conception d'index non-cluster

Aide et Informations

Assistance sur SQL Server 2005