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 doublonsUNION 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
- UNION, INTERSECT, EXCEPT
- UNION ALL contre UNION (coût de la déduplication)
- Expressions CASE et requêtes pivot
- Modèles de tableaux croisés (PostgreSQL crosstab())