Partage via


Créer des index non cluster

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Vous pouvez créer des index non cluster dans SQL Server à l’aide de SQL Server Management Studio ou de Transact-SQL. Un index non-cluster est une structure d'index séparé des données stockées dans une table qui réorganise une ou plusieurs colonnes sélectionnées. Les index non cluster peuvent vous aider à trouver plus rapidement les données au lieu de rechercher dans la table sous-jacente. Il est parfois possible de répondre entièrement aux requêtes selon les données dans l’index non cluster, ou l’index non cluster peut indiquer au moteur de base de données les lignes dans la table sous-jacente. En général, les index non-cluster sont créés pour améliorer les performances des requêtes fréquemment utilisées qui ne sont pas couvertes par l'index cluster ou pour rechercher des lignes dans une table sans index cluster (ce qui s'appelle un « segment »). Vous pouvez créer plusieurs index non cluster sur une table ou une vue indexée.

Avant de commencer

Implémentations types

Les index non-cluster sont implémentés comme ceci :

  • Contraintes UNIQUE

    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 aucun index cluster n'existe déjà sur la table. Pour plus d’informations, consultez Unique Constraints and Check Constraints.

  • 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 pouvant être créés par table est de 999. Cela inclut tous les index créés par des contraintes PRIMARY KEY ou UNIQUE, mais pas 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éer des vues indexées.

Sécurité

Autorisations

Nécessite une autorisation ALTER sur la table ou la vue. L’utilisateur doit être membre du rôle serveur fixe sysadmin ou des rôles de base de données fixes db_ddladmin et db_owner .

Utilisation de SQL Server Management Studio

Pour créer un index non-cluster à l'aide du Concepteur de tables

  1. Dans l'Explorateur d'objets, développez la base de données qui contient la table sur laquelle vous souhaitez créer un index non-cluster.

  2. Développez le dossier Tables .

  3. Cliquez avec le bouton droit sur la table sur laquelle vous souhaitez créer un index non-cluster, puis sélectionnez Conception.

  4. Cliquez avec le bouton droit sur la colonne sur laquelle vous souhaitez créer l’index non-cluster, puis sélectionnez Index/Clés.

  5. Dans la boîte de dialogue Index/Clés, sélectionnez Ajouter.

  6. Sélectionnez le nouvel index dans la zone de texte Clé ou index Primary/Unique sélectionné .

  7. Dans la grille, sélectionnez Créer comme Clustered et choisissez Non dans la liste déroulante à droite de la propriété.

  8. Sélectionnez Fermer.

  9. Dans le menu Fichier, sélectionnez Enregistrer nom_table.

Pour créer un index non-cluster à l'aide de l'Explorateur d'objets

  1. Dans l'Explorateur d'objets, développez la base de données qui contient la table sur laquelle vous souhaitez créer un index non-cluster.

  2. Développez le dossier Tables .

  3. Développez la table sur laquelle vous souhaitez créer un index non-cluster.

  4. Cliquez avec le bouton droit sur le dossier Index, pointez sur Nouvel index, puis sélectionnez Index non cluster....

  5. Dans la boîte de dialogue Nouvel index , sur la page Général , entrez le nom du nouvel index dans la zone Nom de l'index .

  6. Sous Colonnes de clés d’index, sélectionnez Ajouter....

  7. Dans la boîte de dialogue Sélectionner les colonnes à partir de nom_table, cochez les cases correspondant aux colonnes de table à ajouter à l’index non cluster.

  8. Cliquez sur OK.

  9. Dans la boîte de dialogue Nouvel index, cliquez sur OK.

Utilisation de Transact-SQL

Pour créer un index non cluster sur une table à l’aide de Transact-SQL

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données avec AdventureWorks2022 installé. Vous pouvez télécharger AdventureWorks2022 à partir des échantillons de bases de données.

  2. Dans la barre d’outils standard, sélectionnez Nouvelle requête.

  3. Copiez et collez l’exemple suivant dans la fenêtre de requête, puis sélectionnez Exécuter.

    USE AdventureWorks2022;
    GO
    -- Find an existing index named IX_ProductVendor_VendorID and delete it if found.
    IF EXISTS (SELECT name FROM sys.indexes
                WHERE name = N'IX_ProductVendor_VendorID')
        DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
    GO
    -- Create a nonclustered index called IX_ProductVendor_VendorID
    -- on the Purchasing.ProductVendor table using the BusinessEntityID column.
    CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID
        ON Purchasing.ProductVendor (BusinessEntityID);
    GO