par Guillaume Lelarge.

Anatomie d'un index SQL


« Un index accélère la requête » est l'explication la plus simple que j'ai pu voir pour un index. Bien qu'elle décrive parfaitement l'aspect le plus important d'un index, cela n'est malheureusement pas suffisant pour ce livre. Ce chapitre décrit la structure d'un index d'une façon moins superficielle, mais sans trop entrer dans les détails. Il fournit suffisamment d'informations pour comprendre tous les aspects relatifs aux performances en SQL, aspects qui seront détaillés tout au long de ce livre.

Un index est une structure séparée dans la base de données, construite en utilisant l'instruction create index. Il nécessite son propre espace sur le disque et détient une copie des données de la table. Cela signifie qu'un index est une redondance. Créer un index ne modifie pas les données de la table. Cela crée une nouvelle structure de données faisant référence à la table. En fait, un index de base de données ressemble très fortement à l'index d'un livre : il occupe de la place, il est redondant et il fait référence aux informations réelles stockées ailleurs.

Index clusterisés (SQL Server, MySQL/InnoDB)

SQL Server et MySQL (en utilisant InnoDB) ont une vue plus large de ce qu'est un « index ». Ils font références à des tables qui ont une structure d'index en tant que index clusterisé. Ces tables sont appelées des tables organisées en index (en anglais, « Index-Organized Tables » ou IOT) dans la base de données Oracle.

Chapitre 5, « Regrouper les données » les décrit avec plus de détails et explique leur avantages et inconvénients.

Rechercher dans un index de base de données ressemble à rechercher dans un annuaire téléphonique. L'idée est que toutes les informations sont rangées dans un ordre bien défini. Trouver des informations dans un ensemble de données triées est rapide et simple car l'ordre de tri détermine la position de chaque donnée.

Néanmoins, un index de base de données est plus complexe qu'un annuaire car l'index est constamment modifié. Mettre à jour un annuaire imprimé pour chaque changement est impossible car il n'y a pas d'espace entre chaque information pour en ajouter de nouvelles. Un annuaire imprimé contourne ce problème en gérant des mises à jours accumulées lors de la prochaine impression. Une base de données ne peut pas attendre aussi longtemps. Elle doit traiter les commandes INSERT, DELETE et UPDATE immédiatement, tout en conservant l'ordre de l'index sans déplacer de gros volumes de données.

La base de données combine deux structures de données pour parvenir à ce résultat : une liste doublement chaînée et un arbre de recherche. Ces deux structures expliquent la plupart des caractéristiques de performances des bases de données.

Contenu

  1. Les nœuds feuilles — Une liste doublement liée

  2. Le B-Tree — C'est un arbre balancé

  3. Index lents, partie I — Deux ingrédients rendent les index lents

Section précédenteSection suivante

À propos de l'auteur

Photo de Markus Winand

Markus Winand teaches efficient SQL—inhouse and online. He minimizes the development time using modern SQL and optimizes the runtime with smart indexing—for that he also published the book SQL Performance Explained.

“Use The Index, Luke!” by Markus Winand and translated by Guillaume Lelarge is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Mentions légales | Contact | NO WARRANTY | Marque déposée | Privacy | CC-BY-NC-ND 3.0 license