0Pricing
SQL Academy · Leçon

UNION ALL contre UNION (coût de la déduplication)

Comprenez le travail de déduplication effectué par UNION et pourquoi UNION ALL est plus rapide lorsque vous savez qu’il n’y a aucun doublon.

UNION ALL contre UNION (coût de la déduplication) 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.

La différence

  • UNION — combine et supprime les doublons
  • UNION ALL — combine et conserve chaque ligne

UNION ALL est plus rapide

La déduplication est coûteuse (tri ou hachage). UNION ALL l'évite entièrement. Lorsque vous savez qu'il ne peut pas y avoir de doublons, choisissez toujours UNION ALL.

Exemple : lorsque les deux côtés sont disjoints

Les commandes actives et archivées ne se chevauchent jamais — utilisez UNION ALL :

SELECT * FROM active_orders
UNION ALL
SELECT * FROM archived_orders;

Exemple : lorsque les doublons comptent

Combinaison d'une liste d'événements de commande pouvant contenir des lignes répétées : vous souhaitez peut-être réellement compter chaque occurrence — UNION ALL.

SELECT order_id FROM email_events
UNION ALL
SELECT order_id FROM push_events;

Exemple : lorsque vous voulez dédupliquer

Deux listes de diffusion dont certains courriels apparaissent dans les deux — vous voulez une ligne par courriel unique :

SELECT email FROM list_a
UNION
SELECT email FROM list_b;

UNION ALL avec différentes sources

Empilez les tables de métriques pour alimenter un flux « tous les rapports » :

SELECT 'login' AS event, ts, user_id FROM logins
UNION ALL
SELECT 'signup',          ts, user_id FROM signups
UNION ALL
SELECT 'purchase',        ts, user_id FROM purchases
ORDER BY ts DESC LIMIT 100;

Ordre dans chaque sous-SELECT

La plupart des bases de données ignorent ORDER BY dans les sous-SELECT individuels d'un UNION/UNION ALL (sauf s'ils sont encapsulés). Appliquez ORDER BY à la fin :

SELECT ... FROM a
UNION ALL
SELECT ... FROM b
ORDER BY ts DESC;

LIMIT de chaque côté

Entourez chaque côté de parenthèses pour appliquer LIMIT indépendamment :

(SELECT id FROM new_orders ORDER BY created_at DESC LIMIT 10)
UNION ALL
(SELECT id FROM old_orders ORDER BY created_at DESC LIMIT 10);

Quand le planificateur optimise UNION

Si le planificateur peut prouver que les deux côtés sont disjoints (par exemple grâce à des filtres WHERE mutuellement exclusifs), il peut exécuter UNION comme UNION ALL en interne — mais ne vous y fiez pas. Soyez explicite.

UNION ou OR

Pour des conditions OR qui ne peuvent pas utiliser efficacement le même index, un UNION ALL composé de deux requêtes indexées séparément peut être plus rapide :

-- Slow OR (may not use either index):
SELECT * FROM users WHERE city = 'NYC' OR country = 'DE';

-- Sometimes faster:
SELECT * FROM users WHERE city = 'NYC'
UNION
SELECT * FROM users WHERE country = 'DE';

Surveillez l’ordre des colonnes

Les opérateurs d’ensembles correspondent aux colonnes selon leur position, et NOT selon leur nom. SELECT a, b FROM t1 UNION ALL SELECT b, a FROM t2 échange leur signification — soyez vigilant.

Récapitulatif

UNION ALL est le choix par défaut pour de bonnes performances ; utilisez UNION uniquement lorsque vous avez réellement besoin d’éliminer les doublons.

Vérification rapide

Dans quel cas pouvez-vous remplacer UNION par le plus rapide UNION ALL ?

Questions Fréquemment Posées

La leçon « UNION ALL contre UNION (coût de la déduplication) » est-elle gratuite ?

Oui — le texte complet de « UNION ALL contre UNION (coût de la déduplication) » 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 « UNION ALL contre UNION (coût de la déduplication) » ?

Comprenez le travail de déduplication effectué par UNION et pourquoi UNION ALL est plus rapide lorsque vous savez qu’il n’y a aucun doublon. 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 « UNION ALL contre UNION (coût de la déduplication) » ?

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. UNION, INTERSECT, EXCEPT
  2. UNION ALL contre UNION (coût de la déduplication)
  3. Expressions CASE et requêtes pivot
  4. Modèles de tableaux croisés (PostgreSQL crosstab())
← Retour à SQL Academy