UNION ALL rispetto a UNION (costo della deduplicazione)
Comprenda il lavoro di deduplicazione eseguito da UNION e perché UNION ALL è più veloce quando sa che non ci sono duplicati
UNION ALL rispetto a UNION (costo della deduplicazione) è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
La differenza
UNION— combina e rimuove i duplicatiUNION ALL— combina e conserva ogni riga
UNION ALL è più veloce
La deduplicazione è costosa (ordinamento o hash). UNION ALL la ignora completamente. Quando sa che non possono esserci duplicati, scelga sempre UNION ALL.
Esempio: quando i due insiemi sono disgiunti
Gli ordini attivi e archiviati non si sovrappongono mai: utilizzi UNION ALL:
SELECT * FROM active_orders
UNION ALL
SELECT * FROM archived_orders;Esempio: quando i duplicati sono importanti
Combinando un elenco di eventi degli ordini che può contenere righe ripetute, potrebbe voler contare davvero ogni occorrenza: UNION ALL.
SELECT order_id FROM email_events
UNION ALL
SELECT order_id FROM push_events;Esempio: quando si desidera eliminare i duplicati
Due elenchi di newsletter in cui alcune email compaiono in entrambi: desidera una riga per ogni email univoca:
SELECT email FROM list_a
UNION
SELECT email FROM list_b;UNION ALL con origini diverse
Impili le tabelle delle metriche per creare un feed di «tutti i report»:
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;Ordinamento all'interno di ogni sotto-SELECT
La maggior parte dei database ignora ORDER BY all'interno dei singoli sotto-SELECT di una UNION/UNION ALL (a meno che non siano racchiusi). Applichi ORDER BY alla fine:
SELECT ... FROM a
UNION ALL
SELECT ... FROM b
ORDER BY ts DESC;LIMIT per ciascun lato
Racchiuda ogni lato tra parentesi per applicare LIMIT in modo indipendente:
(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);Quando il planner ottimizza UNION
Se il planner può dimostrare che i due lati sono disgiunti (ad esempio grazie a filtri WHERE mutuamente esclusivi), potrebbe eseguire internamente UNION come UNION ALL, ma non faccia affidamento su questo comportamento. Lo specifichi esplicitamente.
UNION rispetto a OR
Per condizioni OR che non possono utilizzare lo stesso indice in modo efficiente, UNION ALL di due query indicizzate separatamente può essere più veloce:
-- 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';Attenzione all'ordine delle colonne
Gli operatori di insieme confrontano le colonne in base alla posizione, NON al nome. SELECT a, b FROM t1 UNION ALL SELECT b, a FROM t2 scambia il significato delle colonne: presti attenzione.
Riepilogo
UNION ALL è la scelta predefinita per ottenere prestazioni migliori; usi UNION solo quando ha realmente bisogno di eliminare i duplicati.
Verifica rapida
Quando può sostituire UNION con il più veloce UNION ALL?
Impara SQL con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 46
- Lezioni
- 183
Domande Frequenti
La lezione «UNION ALL rispetto a UNION (costo della deduplicazione)» è gratuita?
Sì — il testo completo di «UNION ALL rispetto a UNION (costo della deduplicazione)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «UNION ALL rispetto a UNION (costo della deduplicazione)»?
Comprenda il lavoro di deduplicazione eseguito da UNION e perché UNION ALL è più veloce quando sa che non ci sono duplicati Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «UNION ALL rispetto a UNION (costo della deduplicazione)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- UNION, INTERSECT, EXCEPT
- UNION ALL rispetto a UNION (costo della deduplicazione)
- Espressioni CASE e query pivot
- Pattern crosstab (crosstab() di PostgreSQL)