CodeGym /Cours /SQL SELF /Découverte des index

Découverte des index

SQL SELF
Niveau 37 , Leçon 0
Disponible

Tu as déjà croisé des index avant. Aujourd'hui, on va vraiment creuser le sujet pour que tu piges tous les détails de leur fonctionnement. Les index, c'est vraiment top, ça peut booster tes requêtes par centaines, voire milliers de fois. Tu vas kiffer. Mais c'est quoi exactement, un index ?

Imagine que tu cherches un livre précis dans une immense bibliothèque. Sans aucun ordre de recherche, ça te prendrait une éternité. Pour aller plus vite, les livres sont souvent rangés par ordre alphabétique ou par catégories. Un index dans une base de données fonctionne pareil.

Formellement, un index, c’est une structure de données spéciale et supplémentaire, créée pour retrouver rapidement des lignes dans une table. Ça réduit la quantité de données à parcourir pour trouver ce que tu veux.

D'une certaine façon, les index ressemblent à la table des matières d'une encyclopédie, si tu imagines le livre comme une table.
Au lieu de lire toute l’encyclopédie du début à la fin, tu utilises la table des matières pour aller direct à la bonne page.

Imagine que la table employees contient 100 000 employés. Si tu cherches un employé avec le nom de famille "Min", sans index tu dois tout parcourir (c’est long). Avec un index, la recherche est bien plus rapide, car Postgres sait où chercher.

Comment fonctionnent les index ?

Pour piger comment les index accélèrent les requêtes, faut voir ce qui se passe en coulisses. Un index est créé à partir d’une ou plusieurs colonnes d’une table et organise les données dans une structure facile à chercher.

Les index dans PostgreSQL utilisent le plus souvent la structure de données B-Tree (arbre équilibré). Voilà comment ça marche :

  1. Création de l’index : les données des colonnes concernées sont organisées en arbre.
  2. Pendant la recherche : PostgreSQL utilise l’index pour trouver rapidement les lignes voulues, au lieu de scanner toute la table.
  3. Structure de l’arbre : l’arbre est ordonné, ce qui permet de passer vite d’un enregistrement à l’autre (algorithme de recherche binaire).

Exemple : imaginons une table avec 1 million de lignes. Sans index, tu dois tout vérifier. Avec un index, PostgreSQL peut réduire la recherche à quelques dizaines de vérifs.

Quand utiliser les index ?

Les index augmentent grave la vitesse des opérations de lecture, genre : recherche, filtrage, tri. Mais le revers, c’est que ça ralentit les opérations d’écriture (INSERT, UPDATE, DELETE), parce que l’index doit être mis à jour à chaque modif.

Cas où les index sont indispensables

Requêtes de recherche fréquentes : Quand tu cherches souvent des lignes avec des valeurs précises, par exemple :

SELECT * FROM employees WHERE last_name = 'Min';

Filtrage de données : Quand tu utilises des conditions dans WHERE ou HAVING :

SELECT * FROM employees WHERE salary > 50000;

Tri de données : Quand tu utilises ORDER BY :

SELECT * FROM employees ORDER BY hire_date DESC;

Jointure de tables (JOIN) : Si tu fais souvent des jointures sur des colonnes précises.

*Quand *IL NE faut PAS utiliser d’index

  • Si la table est toute petite (genre 10-50 lignes), l’index ne va rien changer niveau vitesse.
  • Si la colonne sur laquelle tu veux indexer est rarement utilisée dans les requêtes.
  • Si la colonne a très peu de valeurs différentes (genre le champ gender qui n’a que 2-3 valeurs).

Exemple : créer un index sur le champ status avec seulement deux valeurs possibles — "actif" et "inactif" — ça n’a pas de sens.

Impact des index sur les performances

Comme tu l’as vu, les index accélèrent les requêtes de lecture, mais peuvent ralentir les écritures. Parce qu’à chaque ajout, modif ou suppression de ligne, PostgreSQL doit aussi mettre à jour l’index.

Trouver le bon équilibre entre index et perfs

  • Pour les tables qui changent souvent, fais gaffe à ne pas mettre trop d’index.
  • Pour les tables où on lit beaucoup plus qu’on écrit, les index sont indispensables.

L’utilité des index dans la vraie vie

En pratique, les index servent à :

  1. Optimiser les applis web : accélérer le chargement des pages grâce à des requêtes SQL plus rapides.
  2. Gérer de grosses tables : sans index, les requêtes sur des tables à millions de lignes peuvent prendre des minutes.
  3. Scalabilité : les index permettent de gérer efficacement de gros volumes de données.

Par exemple, une boutique en ligne avec une base de données de produits et de commandes ne peut pas se passer d’index, sinon les clients attendraient des années pour charger une page.

2
Mission
SQL SELF, niveau 37, leçon 0
Bloqué
Création d'un index dans une table
Création d'un index dans une table
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION