Suppression d'index
Lorsque vous n'avez plus besoin d'un index, vous pouvez le supprimer d'une base de données et récupérer l'espace disque qu'il utilise. Tous les objets de la base de données peuvent alors utiliser cet espace récupéré. Supprimer ou retirer un index sont des termes synonymes.
Vous ne pouvez pas supprimer un index utilisé par une contrainte PRIMARY KEY ou UNIQUE, sauf en supprimant cette dernière. En modifiant l'index, par exemple pour modifier la valeur du facteur de remplissage qu'il utilise, vous pouvez supprimer et recréer un index utilisé par une contrainte PRIMARY KEY ou UNIQUE, sans avoir à supprimer et recréer la contrainte. Pour plus d'informations sur la reconstruction de l'index, consultez Réorganisation et reconstruction d'index.
La reconstruction d'un index, plutôt que sa suppression et sa recréation, est également utile pour recréer un index cluster. En effet, le processus de reconstruction de l'index peut éviter la nécessité de trier les données en fonction des colonnes d'index si les données sont déjà triées.
Si vous supprimez une table ou une vue, qu'elle soit permanente ou temporaire, les index créés sur celle-ci sont automatiquement supprimés en même temps.
Remarque : |
---|
Vous pouvez supprimer un index si vous disposez d'autorisations ALTER sur la table. |
Index cluster
Lorsqu'un index cluster est supprimé, les lignes de données, qui étaient stockées au niveau feuille de l'index cluster, sont stockées dans une table non ordonnée (segment). La suppression d'un index cluster peut prendre du temps, car outre la suppression de l'index cluster, tous les index non-cluster sur la table doivent être reconstruits pour remplacer les clés d'index cluster par des pointeurs de ligne vers le segment. Pour supprimer tous les index d'une table, supprimez d'abord les index non-cluster, puis l'index cluster. Ainsi, aucun index ne devra être reconstruit. Pour plus d'informations sur la relation entre les index cluster et les index non-cluster, consultez Structures d'index non-cluster.
Un espace disque temporaire est nécessaire pour supprimer un index cluster au cours d'une opération de suppression en ligne ou lorsque la clause MOVE TO est spécifiée. Pour plus d'informations, consultez Espace disque requis pour les opérations DDL d'index.
Lorsque l'index cluster d'une vue indexée est supprimé, tous les index non-cluster et les statistiques créées automatiquement sur la même vue sont automatiquement supprimés. Les statistiques créées manuellement ne sont pas supprimées.
Utilisation de la clause MOVE TO
Dans SQL Server 2005, vous pouvez supprimer l'index cluster et déplacer la table résultante non ordonnée (segment de mémoire) vers un autre groupe de fichiers ou schéma de partition dans une même transaction en spécifiant l'option MOVE TO. L'option MOVE TO présente les restrictions suivantes :
- Elle n'est pas valide pour les vues indexées ou les index non-cluster.
- Le schéma de partition ou le groupe de fichiers spécifié doit déjà exister.
- Si l'option MOVE TO n'est pas spécifiée, la table résultante est placée dans le même schéma de partition ou groupe de fichiers que celui qui a été défini pour l'index cluster.
Suppression d'index cluster en ligne
Vous pouvez spécifier l'option ONLINE lorsque vous supprimez un index cluster. Lorsqu'elle a la valeur ON, les requêtes et les modifications apportées aux données sous-jacentes et aux index non-cluster associés ne sont pas bloquées par la transaction DROP INDEX. Pour plus d'informations, consultez Exécution d'opérations en ligne sur les index.
Lorsqu'elle a la valeur ON, l'option ONLINE présente les restrictions suivantes :
- Un seul index peut être supprimé à la fois.
- Elle n'est pas valide pour les index cluster désactivés.
- Elle n'est pas valide pour un index cluster sur une vue ou les index non-cluster sur des tables ou des vues.
- Un index cluster qui contient des colonnes text, ntext, image, varchar(max), nvarchar(max), varbinary(max) ou xml dans les lignes de données au niveau feuille ne peut pas être supprimé en ligne.
Définition de l'option d'index MAXDOP
Dans SQL Server 2005, vous pouvez ignorer l'option de configuration max degree of parallelism de sp_configure pour l'opération de suppression d'index en spécifiant l'option d'index MAXDOP. Pour plus d'informations, consultez Configuration d'opérations d'index parallèles.
Index de texte intégral
Un index spécifié comme clé de texte intégral de la table ne peut pas être supprimé. Affichez les propriétés de l'index pour déterminer si celui-ci constitue la clé de texte intégral. Pour plus d'informations, consultez INDEXPROPERTY (Transact-SQL).
Pour supprimer un index
Procédure : suppression d'un index (SQL Server Management Studio)
Exemples
A. Suppression d'un index
L'exemple suivant supprime l'index IX
_ProductVendor
_VendorID
de la table ProductVendor
.
USE AdventureWorks;
GO
DROP INDEX IX_ProductVendor_VendorID
ON Purchasing.ProductVendor;
GO
B. Suppression d'un index cluster dans le mode ONLINE
L'exemple suivant supprime un index cluster avec l'option ONLINE définie sur ON. La table non ordonnée résultante (segment de mémoire) est stockée dans le même groupe de fichiers que celui où se trouvait l'index.
USE AdventureWorks;
GO
DROP INDEX AK_BillOfMaterials_ProductAssemblyID_ComponentID_StartDate
ON Production.BillOfMaterials WITH (ONLINE = ON, MAXDOP = 2);
GO