Sobes.tech
Middle

Comment un index optimise-t-il l'exécution d'une requête?

sobes.tech IA

Réponse de l'IA

L'index est une structure de données (généralement un arbre B) qui stocke une petite partie des données de la table et des liens vers les lignes correspondantes dans la table principale.

Processus d'optimisation :

  1. Recherche rapide : Au lieu de scanner toute la table (scan complet), le système de gestion de bases de données (SGBD) parcourt l'index. L'index est trié et optimisé pour une recherche rapide sur certaines colonnes.
  2. Réduction de la quantité de données lues : L'index ne contient que les colonnes indexées et des pointeurs, ce qui réduit considérablement la quantité de données à lire du disque par rapport à la lecture de toute la ligne ou de toute page de données.
  3. Absence de tri : L'index est déjà trié par les colonnes indexées. Cela évite d'effectuer une opération de tri coûteuse si la requête nécessite un résultat trié.
  4. Optimisation des opérations JOIN : Lors de la jointure de tables (JOIN) sur des colonnes indexées, le SGBD peut utiliser l'index pour trouver rapidement les lignes correspondantes dans une autre table, au lieu d'effectuer des boucles imbriquées sur toute la table.

Exemple :

Sans index sur la colonne LastName pour la requête SELECT * FROM Users WHERE LastName = 'Ivanov', le SGBD devrait lire chaque ligne dans la table Users et vérifier la valeur de LastName.

Avec un index sur LastName, le SGBD trouve rapidement les enregistrements où LastName est égal à 'Ivanov', en parcourant l'index trié, puis en utilisant les pointeurs de l'index pour obtenir les données complètes des lignes dans la table principale.

-- Exemple de requête bénéficiant de l'index sur LastName
SELECT UserId, FirstName
FROM Users
WHERE LastName = 'Ivanov';
-- Exemple de création d'un index pour optimiser la requête ci-dessus
CREATE INDEX IX_Users_LastName ON Users (LastName);