SQL Academy · Leçon

Index composites et ordre des colonnes

Choisissez l’ordre des colonnes des index composites, comprenez la règle du préfixe gauche et concevez des index couvrant plusieurs requêtes.

Leçon 2 sur 413 étapes

Index composites et ordre des colonnes est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 2 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 composé ?

Il s’agit d’un index portant sur plusieurs colonnes. Les arbres B de PostgreSQL peuvent indexer jusqu’à 32 colonnes ; en pratique, 2 à 4 colonnes sont habituelles.

CREATE INDEX orders_user_created_idx ON orders(user_id, created_at DESC);

Pourquoi utiliser un index composé ?

Deux situations :

  • La requête filtre simultanément sur plusieurs colonnes
  • La requête filtre sur une colonne et trie selon une autre

Règle du préfixe de gauche

Un index sur (a, b, c) peut servir pour :

  • WHERE a = ?
  • WHERE a = ? AND b = ?
  • WHERE a = ? AND b = ? AND c = ?

Il ne sert NOT pas pour WHERE b = ? seul, ni pour WHERE c = ?.

L’ordre compte

Placez en premier la colonne la plus sélective AND celle qui fait le plus souvent l’objet d’un filtre. Placez les colonnes d’égalité avant les colonnes d’intervalle :

CREATE INDEX orders_user_total_idx ON orders(user_id, total);

-- Best for:  WHERE user_id = 42 AND total > 100
-- Also OK:  WHERE user_id = 42
-- Useless:  WHERE total > 100   (without user_id)

Égalité ou intervalle

Les prédicats d’égalité utilisent efficacement l’index ; les intervalles l’utilisent également, mais limitent son utilité ultérieure. Les colonnes d’égalité doivent être placées en premier :

-- Index: (status, created_at)
WHERE status = 'paid' AND created_at >= ...   -- both columns used
WHERE created_at >= ... AND status = 'paid'  -- index used for status, range scan on created_at

Ordre de l’index = ordre du tri

Un index sur (user_id, created_at DESC) fournit les "commandes de l’utilisateur, de la plus récente à la plus ancienne" sans étape de tri :

EXPLAIN ANALYZE
SELECT * FROM orders
WHERE user_id = 42
ORDER BY created_at DESC LIMIT 10;
-- Index Scan, no Sort node needed

Inclure des colonnes qui ne sont pas des clés (INCLUDE)

PG 11+ prend en charge INCLUDE pour les index "couvrants" — les colonnes supplémentaires sont stockées dans les feuilles, mais ne servent pas au classement :

CREATE INDEX orders_user_idx ON orders(user_id)
  INCLUDE (total, status);

-- Enables Index-Only Scan for queries that need just these columns.

Quand ne pas créer d’index composés

Si les colonnes sont interrogées indépendamment, deux index portant chacun sur une seule colonne peuvent répondre à davantage de requêtes. Les index composés échangent de la flexibilité contre la possibilité qu’"une requête ait tout ce qu’il faut".

Combinaison d’index bitmap

PostgreSQL peut combiner plusieurs index à colonne unique au moyen d’un parcours d’index bitmap :

EXPLAIN ANALYZE
SELECT * FROM orders WHERE user_id = 42 AND status = 'paid';
-- BitmapAnd of two index scans — works without a composite, but slower than the right composite.

Surveillez le gonflement des index

Les index composites sont plus larges. Des index plus larges = des fichiers plus volumineux = une plus petite partie de l’index tient dans le cache. Soyez méthodique.

Choisir l’ordre des colonnes — exemple détaillé

Requête : « commandes d’un utilisateur dans une plage de dates, triées par date ».

-- Index design:
CREATE INDEX orders_user_created_idx
  ON orders(user_id, created_at DESC);

-- Query (efficiently uses the index):
SELECT * FROM orders
WHERE user_id = 42
  AND created_at >= NOW() - INTERVAL '30 days'
ORDER BY created_at DESC LIMIT 10;

Récapitulatif

Les index composites prennent en charge les filtres sur plusieurs colonnes et évitent les étapes de tri.

  • Règle du préfixe le plus à gauche
  • Colonnes d’égalité en premier
  • INCLUDE pour les colonnes servant uniquement à couvrir la requête
  • Deux index simples ou un index composite — cela dépend du mélange de requêtes

Vérification rapide

Vous disposez d’un index sur (user_id, status, created_at). Quelle requête CANNOT l’utiliser efficacement ?

Gratuit pour commencer

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 composites et ordre des colonnes » est-elle gratuite ?

Oui — le texte complet de « Index composites et ordre des colonnes » 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 composites et ordre des colonnes » ?

Choisissez l’ordre des colonnes des index composites, comprenez la règle du préfixe gauche et concevez des index couvrant plusieurs requêtes. 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 2 sur 4.

Combien de temps prend la leçon « Index composites et ordre des colonnes » ?

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

  1. Index B-tree, Hash, GiST ou GIN
  2. Index composites et ordre des colonnes
  3. Index partiels et index d’expressions
  4. Maintenance des index et gonflement
← Retour à SQL Academy