Les index de base de données, expliqués avec un annuaire téléphonique
Chaque requête lente que j'ai corrigée revenait à la même image. Vous demandez à MySQL WHERE email = 'omar@example.com' et, sans index, elle ne peut faire qu'une seule chose :
Ce qu'est vraiment un index
Un index est une seconde structure, triée, à côté de votre table : un arbre B. Une chose triée se cherche par dichotomie, donc la base fait des sauts, pas des pas. Même requête, avec un index sur email :
Quand ajouter un index
- Les colonnes présentes dans le
WHERE, leJOIN ... ONet l'ORDER BYde vos requêtes fréquentes. - Les clés étrangères, toujours.
- Pas sur les colonnes que vous filtrez presque jamais : chaque index ralentit un peu les écritures.
EXPLAIN sur la requête. Si vous voyez type: ALL, c'est le premier croquis : un balayage complet. Avec le bon index, ça devient ref ou range, le second croquis.Le gain de 20% de performance que j'ai livré chez Getmayes tenait surtout à ça : lire la sortie d'EXPLAIN, dessiner l'arbre, et ajouter les quatre index que les requêtes réclamaient depuis le début.
Ce que disent les lecteurs