Index

Un index est un ensemble de pointeurs classés logiquement par les valeurs d'une ou de plusieurs clés. Les pointeurs peuvent faire référence aux lignes d'une table, aux blocs d'une table MDC ou ITC, aux données XML d'un objet de stockage XML, etc.

Les index sont utilisés pour:
  • Améliorez les performances. Dans la plupart des cas, l'accès aux données est plus rapide avec un index. Bien qu'un index ne puisse pas être créé pour une vue, un index créé pour la table sur laquelle une vue est basée peut parfois améliorer les performances des opérations sur cette vue.
  • Vérifiez l'unicité. Une table avec un index à entrées uniques ne peut pas comporter de lignes avec des clés identiques.

Lorsque des données sont ajoutées à une table, elles sont ajoutées en bas (sauf si d'autres actions ont été effectuées sur la table ou les données ajoutées). Il n'y a pas d'ordre inhérent aux données. Lors de la recherche d'une ligne de données particulière, chaque ligne de la table de la première à la dernière doit être vérifiée. Les index sont utilisés pour accéder aux données de la table dans un ordre qui, autrement, pourrait ne pas être disponible.

Généralement, lorsque vous recherchez des données dans une table, vous recherchez des lignes avec des colonnes ayant des valeurs spécifiques. Une valeur de colonne dans une ligne de données peut être utilisée pour identifier la ligne entière. Par exemple, un numéro d'employé définirait probablement de manière unique un employé particulier. Ou bien, plusieurs colonnes peuvent être nécessaires pour identifier la ligne. Par exemple, une combinaison du nom du client et du numéro de téléphone. Les colonnes d'un index utilisées pour identifier les lignes de données sont appelées clés. Une colonne peut être utilisée dans plusieurs clés.

Un index est classé en fonction des valeurs au sein d'une clé. Les clés peuvent être uniques ou non uniques. Chaque table doit avoir au moins une clé unique, mais peut également avoir d'autres clés non uniques. Chaque index possède exactement une clé. Par exemple, vous pouvez utiliser le numéro d'ID d'employé (unique) comme clé pour un index et le numéro de service (non unique) comme clé pour un index différent.

Tous les index ne pointent pas vers les lignes d'une table. Les index de blocs MDC et ITC pointent vers des extensions (ou des blocs) des données. Les index XML pour les données XML utilisent des expressions de modèle XML particulières pour indexer les chemins et les valeurs dans les documents XML stockés dans une seule colonne. Le type de données de cette colonne doit être XML. Les index de bloc MDC et ITC et les index XML sont des index générés par le système.

Exemple

La table A de la Figure 1 comporte un index basé sur les numéros d'employé dans la table. Cette valeur de clé fournit un pointeur vers les lignes de la table. Par exemple, le numéro d'employé 19 désigne l'employé KMP. Un index permet un accès efficace aux lignes d'une table en créant un chemin d'accès aux données via des pointeurs.

Des index uniques peuvent être créés pour garantir l'unicité de la clé d'index. Une clé d'index est une colonne ou une collection ordonnée de colonnes sur lesquelles un index est défini. L'utilisation d'un index à entrées uniques garantit que la valeur de chaque clé d'index dans la ou les colonnes indexées est unique.

La Figure 1 présente la relation entre un index et une table.

Figure 1 : Relation entre un index et une table
Graphique illustrant la relation entre un index et une table.

La Figure 2 illustre les relations entre certains objets de base de données. Il indique également que les tables, les index et les données longues sont stockés dans des espaces table.

Figure 2. Relations entre les objets de base de données sélectionnés
Graphique illustrant la relation entre les objets de base de données.