0Pricing
SQL Academy · Leçon

Interroger efficacement plusieurs partitions

Écrivez des requêtes qui tirent parti de l’élagage des partitions et vérifiez cet élagage avec EXPLAIN.

Interroger efficacement plusieurs partitions est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.

Filtrer sur la clé de partitionnement

L’élagage ne fonctionne que lorsque la clause WHERE inclut la clé de partitionnement :

-- Prunes (uses date partitioning):
SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';

-- No pruning — scans all partitions:
SELECT * FROM events WHERE user_id = 42;

Élagage composite

Le planificateur peut effectuer l’élagage selon plusieurs clés dans des tables partitionnées sur plusieurs niveaux :

SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01'
  AND user_id = 42;
-- Prunes by date AND by hash partition.

EXPLAIN affiche l’élagage

Vérifiez le plan pour confirmer que l’élagage est bien effectué :

EXPLAIN SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Append
--   -> Seq Scan on events_2024_q1
-- Only Q1 partition shown; others pruned.

Exclusion des contraintes ou élagage des partitions

Les versions modernes de PG utilisent par défaut l’« élagage des partitions », qui est rapide. L’ancienne « exclusion des contraintes » était plus lente : vérifiez que enable_partition_pruning = on est activé.

Élagage au moment de l’exécution

Même avec des requêtes paramétrées (PREPARE), PG peut effectuer l’élagage au moment de l’exécution :

PREPARE p(timestamptz, timestamptz) AS
SELECT * FROM events WHERE ts >= $1 AND ts < $2;

EXECUTE p('2024-03-01', '2024-04-01');
-- Pruning happens at execute, not at parse.

Index inter-partitions

Les index sont propagés aux partitions. Une requête sur la colonne indexée fonctionne sur toutes les partitions, mais le planificateur parcourt l’index de chacune d’elles.

Agrégations inter-partitions

Un GROUP BY sur la clé de partitionnement est le plus avantageux. Un GROUP BY sur d’autres colonnes parcourt toutes les partitions.

Exécution parallèle par partition

PostgreSQL peut exécuter en parallèle les parcours des partitions (PG 11 ou version ultérieure) :

SET max_parallel_workers_per_gather = 4;
EXPLAIN SELECT COUNT(*) FROM events;
-- Parallel Append over partitions.

Jointures entre tables partitionnées

Si les deux tables partitionnées partagent la même clé de partitionnement, une « jointure par partition » est plus rapide : chaque partition est jointe indépendamment :

SET enable_partitionwise_join = on;
-- Now PG can join events to event_metrics partition-by-partition.

Éviter les erreurs courantes

  • N’appliquez pas de fonctions à la clé de partitionnement dans WHERE : cela désactive l’élagage
  • N’oubliez pas la clé de partitionnement dans vos requêtes
  • Ne créez pas des milliers de partitions minuscules : le coût de planification devient prépondérant

Un nombre raisonnable de partitions

Visez quelques dizaines à quelques centaines de partitions, et non des milliers. Chaque partition ajoute un coût lors de la planification. Pour des besoins très fins, utilisez le sous-partitionnement.

Maintenance par partition

VACUUM, ANALYZE et REINDEX s’exécutent par partition et peuvent s’exécuter en parallèle. Le gain augmente avec le nombre de partitions, dans une mesure raisonnable.

Récapitulatif

Le partitionnement favorise les requêtes qui filtrent par la clé de partitionnement.

  • WHERE sur la clé de partitionnement → élagage
  • Confirmez-le avec EXPLAIN
  • Activez la jointure par partition pour les jointures compatibles
  • Ne multipliez pas excessivement les partitions

Vérification rapide

Vous avez events partitionnée par mois selon ts. Quelle requête bénéficie de l’élagage des partitions ?

Questions Fréquemment Posées

La leçon « Interroger efficacement plusieurs partitions » est-elle gratuite ?

Oui — le texte complet de « Interroger efficacement plusieurs partitions » 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 « Interroger efficacement plusieurs partitions » ?

Écrivez des requêtes qui tirent parti de l’élagage des partitions et vérifiez cet élagage 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 4 sur 4.

Combien de temps prend la leçon « Interroger efficacement plusieurs partitions » ?

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. Pourquoi partitionner : élagage et maintenance
  2. Partitionnement par intervalle, liste et hachage
  3. Détacher et rattacher des partitions
  4. Interroger efficacement plusieurs partitions
← Retour à SQL Academy