Partager via


Créer des index non cluster

Vous pouvez créer des index non cluster dans SQL Server 2014 à l’aide de SQL Server Management Studio ou de Transact-SQL. Un index non cluster est une structure d’index distincte des données stockées dans une table qui réorganise une ou plusieurs colonnes sélectionnées. Les index non cluster peuvent souvent vous aider à trouver des données plus rapidement que de rechercher la table sous-jacente ; les requêtes peuvent parfois être entièrement résolues par les données de l’index non cluster, ou l’index non cluster peut pointer le moteur de base de données vers les lignes de la table sous-jacente. Généralement, les index non clusterisés sont créés pour améliorer les performances des requêtes fréquemment utilisées non couvertes par l’index clusterisé ou pour localiser les lignes d’une table sans index clusterisé (appelé tas). Vous pouvez créer plusieurs index non cluster sur une table ou une vue indexée.

Dans cette rubrique

Avant de commencer

Implémentations classiques

Les index non cluster sont implémentés de la manière suivante :

  • Contraintes UNIQUE

    Lorsque vous créez une contrainte UNIQUE, un index non cluster unique est créé pour appliquer une contrainte UNIQUE par défaut. Vous pouvez spécifier un index cluster unique si un index cluster sur la table n’existe pas déjà. 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 cluster n’est pas spécifié. Le nombre maximal d’index non cluster pouvant être créés par table est de 999. Cela inclut tous les index créés par les contraintes PRIMARY KEY ou UNIQUE, mais n’inclut pas d’index XML.

  • Index non-clusterisé dans une vue indexée

    Une fois qu’un index cluster unique a été créé sur une vue, des index non cluster peuvent être créés. Pour plus d’informations, consultez Créer des vues indexées.

Sécurité

Autorisations

Nécessite l’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 Création.

  4. Dans le menu Concepteur de tables , cliquez sur Index/Clés.

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

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

  7. Dans la grille, sélectionnez Créer en tant que cluster, puis choisissez Non dans la liste déroulante à droite de la propriété.

  8. Cliquez sur Fermer.

  9. Dans le menu Fichier , cliquez sur Enregistrertable_name.

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 , dans la page Général , entrez le nom du nouvel index dans la zone Nom de l’index .

  6. Sous Colonnes clés d’index, cliquez sur Ajouter....

  7. Dans la boîte de dialogue Sélectionner des colonnes à partir detable_name, sélectionnez la case à cocher ou les cases à cocher de la colonne de table ou des colonnes à ajouter à l’index non-clusterisé.

  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

  1. Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.

    USE AdventureWorks2012;  
    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  
    

Pour plus d’informations, consultez CREATE INDEX (Transact-SQL).