Indexation

Index

Un index est une structure de données qui permet d'accélérer les recherches dans une table en associant à une clé d'index (la liste des attributs indexés) l'emplacement physique de l'enregistrement sur le disque.

Les accès effectuées sur un index peuvent donc se faire sur des structures optimisées pour la recherche (liste triée, B-tree...) au lieu de se faire par parcours séquentiel et intégral des enregistrements.

Exemple de construction d'un B-tree

Cas d'usage des index de type B-Tree

Les index doivent être utilisés sur les attributs :

  • souvent mobilisés dans une restriction (donc une jointure)

  • très discriminés (c'est à dire pour lesquels peu d'enregistrements ont les mêmes valeurs)

  • rarement modifiés

Inconvénients des index

  • Les index diminuent les performances en mise à jour (puisqu'il faut mettre à jour les index en même temps que les données).

  • Les index ajoutent du volume à la base de données et leur volume peut devenir non négligeable.

Créer un index en SQL

CREATE INDEX nom_index ON nom_table (NomColonneClé1, NomColonneClé2, ...);

Index implicites

La plupart des SGBD créent un index pour chaque clé (primaire ou candidate). En effet la vérification de la contrainte d'unicité à chaque mise à jour des données justifie à elle seule la présence de l'index.

Attributs indexés utilisés dans des fonctions

SELECT *
FROM T
WHERE ABS(X) > 100
Mode diaporama