Index (Visual Database Tools)
Mise à jour : novembre 2007
Un index donne un accès rapide à des informations spécifiques d'une table de base de données. Un index est une structure qui organise les valeurs d'une ou de plusieurs colonnes d'une table de base de données, par exemple la colonne du nom de famille (lname) de la table employee. Lorsque vous rechercherez un employé spécifique selon son nom de famille, l'index vous aidera à obtenir cette information plus vite que si vous deviez effectuer la recherche dans toutes les lignes de la table.
L'index fournit des pointeurs vers les valeurs des données stockées dans des colonnes spécifiées de la table, puis organise ces pointeurs selon l'ordre de tri que vous spécifiez. La base de données utilise l'index à peu près de la même façon que vous lorsque vous consultez l'index d'un livre : il recherche une valeur particulière dans l'index, puis suit le pointeur vers la ligne la contenant.
Dans les schémas de base de données, vous pouvez créer, modifier ou supprimer tous les types d'index dans la boîte de dialogue Index/Clés, la boîte de dialogue Index XML ou la boîte de dialogue Index de texte intégral d'une table sélectionnée. Un index est enregistré dans la base de données en même temps que la table à laquelle il est attaché ou lorsque vous enregistrez le schéma dans lequel cette table apparaît. Pour plus d'informations, consultez Utilisation des index.
Remarque : |
---|
Toutes les bases de données n'utilisent pas les index de la même façon. Pour plus d'informations, consultez la documentation de votre base de données. |
En règle générale, ne créez un index sur une table que si les données des colonnes indexées sont destinées à être souvent interrogées. Les index prennent de la place sur disque et ralentissent l'ajout, la suppression et la mise à jour de lignes. Dans la plupart des situations, le gain de temps apporté par les index lors de l'extraction de données l'emporte nettement sur ces inconvénients. Cependant, si votre application met à jour des données très souvent ou en cas d'espace disque limité, vous aurez tendance à restreindre le nombre d'index.
Avant de créer un index, déterminez les colonnes à utiliser et le type d'index à créer.
Colonnes d'un index
Vous pouvez créer des index basés sur une ou de plusieurs colonnes situées dans une table de la base de données. Les index multicolonnes permettent de faire la distinction entre plusieurs lignes dans lesquelles une colonne peut avoir la même valeur.
Les index sont également utiles si vous effectuez souvent des recherches et des tris selon plusieurs colonnes à la fois. Par exemple, si, dans une même requête, vous définissez souvent des critères relatifs aux colonnes relatives aux noms de famille et prénoms, la création d'un index multicolonne sur ces deux colonnes se justifie pleinement.
Pour déterminer l'utilité d'un index :
Examinez les clauses WHERE et JOIN de vos requêtes. Toute colonne incluse dans une des deux clauses est candidate potentielle à un index.
Faites des essais avec le nouvel index pour étudier son effet sur les performances des requêtes en cours d'exécution.
Considérez le nombre d'index déjà créés sur la table. Il vaut mieux éviter d'avoir un grand nombre d'index sur une même table.
Examinez les définitions des index déjà créés sur la table. Il vaut mieux éviter le chevauchement d'index contenant des colonnes partagées.
Examinez le nombre de valeurs de données uniques d'une colonne et comparez-le au nombre de lignes de la table. Le résultat est la sélectivité de cette colonne et il peut vous aider à décider si elle est candidate à un index et, si oui, de quel type.
Types d'index
Selon la fonctionnalité de votre base de données, vous pouvez créer, dans le Concepteur de bases de données, trois types d'index : unique, clé primaire et cluster. Pour plus de détails sur les fonctionnalités d'indexation prises en charge par votre base de données, consultez sa documentation.
Conseil : |
---|
Bien qu'un index unique aide à localiser des informations, il vaut mieux, pour des raisons de performances, utiliser à la place des contraintes de clé primaire ou uniques. Pour plus d'informations sur ces contraintes, consultez Utilisation des contraintes. |
Index unique
Dans un index unique, deux lignes ne peuvent pas avoir la même valeur d'index.
La plupart des bases de données vous empêchent d'enregistrer une table pour laquelle un index unique vient d'être créé si les données existantes contiennent des valeurs clés dupliquées. La base de données peut également interdire l'ajout de nouvelles données si ces dernières créent dans la table des valeurs clés dupliquées. Par exemple, si vous créez un index unique sur le nom de famille (lname) de l'employé dans la table employee, il est impossible que deux employés aient le même nom de famille.
Pour plus d'informations sur les index uniques, consultez Comment : créer des index uniques.
Index de clé primaire
Dans une base de données, une table contient souvent une colonne ou une combinaison de colonnes dont la valeur identifie chaque ligne de manière unique. Cette colonne est appelée clé primaire de la table.
La définition d'une clé primaire pour une table appartenant à un schéma de base de données crée automatiquement un index de clé primaire, type spécifique d'index unique. Cet index impose que chaque valeur de la clé primaire soit unique. Il permet également un accès rapide aux données lorsque vous l'utilisez dans des requêtes. Pour plus d'informations sur les clés primaires, consultez Utilisation des clés.
Index cluster
Dans un index cluster, l'ordre physique des lignes de la table est identique à l'ordre logique (indexé) des valeurs clés. Une table ne peut contenir qu'un seul index cluster.
Dans un index non cluster, l'ordre physique des lignes de la table est différent de l'ordre logique des valeurs clés. Généralement, l'accès aux données est plus rapide dans un index cluster.
Pour plus d'informations sur l'utilisation d'un index cluster, consultez Comment : créer des index cluster.
Index de texte intégral
Créez un index de texte intégral si vous souhaitez exécuter des recherches de texte intégral sur les colonnes textuelles de vos tables de base de données. Un index de texte intégral se base sur un index normal ; vous devez donc le créer d'abord. L'index normal doit être créé sur une colonne unique, non null, et il est conseillé de choisir une colonne contenant des petites valeurs plutôt que des grandes. Pour plus d'informations, consultez Comment : créer des index.
Remarque : |
---|
Pour créer un index de texte intégral, vous devez d'abord créer un catalogue à l'aide d'un outil externe, tel que SQL Server Management Studio ou Enterprise Manager. |
Remarque : |
---|
La fonctionnalité d'index de texte intégral n'est pas disponible dans Microsoft SQL Server Express 2005. |
Index XML
Utilisez la boîte de dialogue Index XML pour créer des index pour les colonnes du type de données XML qui ne peuvent pas être indexées à l'aide de la boîte de dialogue Index/Clés. Chaque colonne XML peut posséder plusieurs index XML, mais le premier index créé (principal) est utilisé comme base pour les autres (secondaires). Si vous supprimez l'index XML principal, les autres sont également supprimés. Pour plus d'informations sur les index XML, consultez Comment : créer des index XML.
Voir aussi
Référence
Relations de clé étrangère, boîte de dialogue
Index de texte intégral, boîte de dialogue