Index pour les requêtes courantes
Ajoutez des index pour les requêtes les plus fréquentes : par utilisateur, par date ou par clé étrangère, puis mesurez leur impact avec EXPLAIN.
Index pour les requêtes courantes est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu’est-ce qu’un index ?
Un index est une structure de données distincte, stockée sur disque, qui permet à la base de données de trouver les lignes par valeur de colonne sans parcourir toute la table. L’implémentation classique est un arbre B.
Les index privilégient les lectures au détriment des écritures
Chaque index ralentit légèrement les INSERT/UPDATE/DELETE (l’index doit également être mis à jour). N’ajoutez pas d’index dont vous n’avez pas besoin.
Les clés primaires obtiennent un index automatiquement
Déclarer PRIMARY KEY crée automatiquement un index B-tree unique. Il en va de même pour les colonnes UNIQUE.
Indexez les colonnes de clés étrangères
PostgreSQL n’indexe pas automatiquement le côté enfant d’une FK. Ajoutez-en toujours un : sans cela, la suppression d’un parent parcourt tous ses enfants :
CREATE INDEX comments_post_id_idx ON comments(post_id);
CREATE INDEX comments_author_id_idx ON comments(author_id);Indexez les colonnes utilisées dans WHERE
Si vous filtrez souvent avec created_at, indexez cette colonne :
CREATE INDEX posts_created_at_idx ON posts(created_at DESC);
-- Query benefits:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 20;Index composites
Pour les filtres portant sur plusieurs colonnes, un index composite peut être beaucoup plus rapide que deux index à une seule colonne :
CREATE INDEX posts_author_published_idx
ON posts(author_id, published_at DESC);
-- This query uses the index for both filter and sort:
SELECT * FROM posts
WHERE author_id = 42
ORDER BY published_at DESC LIMIT 10;Règle du préfixe gauche
Un index composite (a, b, c) peut servir pour WHERE a = ? et WHERE a = ? AND b = ?, mais PAS pour WHERE b = ? seul. L’ordre est important.
Index partiels
Indexez uniquement les lignes que vous interrogez :
-- Only published posts:
CREATE INDEX posts_published_idx
ON posts(published_at DESC)
WHERE published_at IS NOT NULL;
-- Smaller index, faster lookups for the common case.Index d’expressions
Indexez le résultat d’une fonction appliquée à une colonne :
CREATE INDEX users_email_lower_idx ON users(LOWER(email));
-- Query that uses it:
SELECT * FROM users WHERE LOWER(email) = LOWER($1);N’abusez pas des index
Règles générales :
- Indexer la PK ✓ (automatique)
- Indexer les colonnes UNIQUE ✓ (automatique)
- Indexer les colonnes FK ✓
- Indexer les colonnes utilisées dans WHERE / JOIN / ORDER BY de vos requêtes les plus fréquentes
- Ne pas indexer les colonnes dont la sélectivité est très faible (par exemple un booléen réparti à 50/50)
Mesurez avec EXPLAIN
Avant et après l’ajout d’un index, exécutez EXPLAIN ANALYZE pour vérifier que le planificateur l’utilise :
EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = 42 ORDER BY published_at DESC LIMIT 10;Récapitulatif
Pour notre blog : indexez les FK (post_id sur les commentaires, author_id sur les articles et les commentaires) ainsi que (author_id, published_at DESC) sur les articles pour les requêtes du type « derniers articles d’un utilisateur ».
Vérification rapide
Vous avez ajouté une clé étrangère orders.user_id REFERENCES users(id). Quel index, le cas échéant, devez-vous créer ?
Apprends SQL avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 46
- Leçons
- 183
Questions Fréquemment Posées
La leçon « Index pour les requêtes courantes » est-elle gratuite ?
Oui — le texte complet de « Index pour les requêtes courantes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Index pour les requêtes courantes » ?
Ajoutez des index pour les requêtes les plus fréquentes : par utilisateur, par date ou par clé étrangère, puis mesurez leur impact avec EXPLAIN. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Index pour les requêtes courantes » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Modéliser un blog : utilisateurs, publications, commentaires
- Choisir les clés et les types
- Index pour les requêtes courantes
- Initialiser la base de données avec des données de test