UNION ALL vs UNION (kaksoiskappaleiden poiston kustannus)
Ymmärtäkää UNIONin tekemän kaksoiskappaleiden poiston työmäärä ja miksi UNION ALL on nopeampi, kun tiedätte, ettei kaksoiskappaleita ole.
UNION ALL vs UNION (kaksoiskappaleiden poiston kustannus) on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Ero
UNION— yhdistää ja poistaa duplikaatitUNION ALL— yhdistää ja säilyttää kaikki rivit
UNION ALL on nopeampi
Duplikaattien poistaminen on kallista (lajittelu tai hajautus). UNION ALL ohittaa sen kokonaan. Kun tiedät, ettei duplikaatteja voi olla, valitse aina UNION ALL.
Esimerkki: kun osiot eivät mene päällekkäin
Aktiiviset ja arkistoidut tilaukset eivät koskaan mene päällekkäin — käytä UNION ALL -operaattoria:
SELECT * FROM active_orders
UNION ALL
SELECT * FROM archived_orders;Esimerkki: kun duplikaateilla on merkitystä
Kun yhdistät tilausluettelon tapahtumia, joissa voi olla toistuvia rivejä: saatat todella haluta laskea jokaisen esiintymän — käytä UNION ALL -operaattoria.
SELECT order_id FROM email_events
UNION ALL
SELECT order_id FROM push_events;Esimerkki: kun haluat poistaa duplikaatit
Kaksi uutiskirjelistaa, joissa jotkin sähköpostiosoitteet esiintyvät molemmissa — haluat yhden rivin kutakin yksilöllistä sähköpostiosoitetta kohden:
SELECT email FROM list_a
UNION
SELECT email FROM list_b;UNION ALL eri lähteiden kanssa
Yhdistä mittaritaulut yhdeksi "kaikki raportit" -syötteeksi:
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;Järjestys kunkin alikyselyn sisällä
Useimmat tietokannat ohittavat ORDER BY -lauseen UNION- tai UNION ALL -lausekkeen yksittäisten alikyselyjen sisällä (ellei alikyselyä ole kääritty). Käytä ORDER BY -lausetta lopussa:
SELECT ... FROM a
UNION ALL
SELECT ... FROM b
ORDER BY ts DESC;LIMIT kummallekin puolelle
Kääri kumpikin puoli sulkeisiin, jotta voit rajoittaa niitä erikseen LIMIT-lauseella:
(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);Kun kyselysuunnittelija optimoi UNION-operaation
Jos kyselysuunnittelija pystyy todistamaan, etteivät osiot mene päällekkäin (esimerkiksi toisensa poissulkevilla WHERE-suodattimilla), se saattaa suorittaa UNION-operaation sisäisesti UNION ALL -operaationa — älä kuitenkaan luota tähän. Ilmaise tarkoitus eksplisiittisesti.
UNION vai OR
OR-ehdoissa, jotka eivät pysty hyödyntämään samaa indeksiä tehokkaasti, kahden erikseen indeksoidun kyselyn UNION ALL voi olla nopeampi:
-- 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';Sarakkeiden järjestys
Joukko-operaattorit yhdistävät sarakkeet sijainnin, EIVÄT nimen perusteella. SELECT a, b FROM t1 UNION ALL SELECT b, a FROM t2 vaihtaa sarakkeiden merkitykset keskenään — olkaa varovaisia.
Kertaus
UNION ALL on suorituskyvyn kannalta oletusvalinta; käyttäkää UNIONia vain, kun tarvitsette todella duplikaattien poistoa.
Pikatarkistus
Milloin voitte korvata UNIONin nopeammalla UNION ALL -operaattorilla?
Opi SQL tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 46
- Oppitunnit
- 183
Usein kysytyt kysymykset
Onko oppitunti ”UNION ALL vs UNION (kaksoiskappaleiden poiston kustannus)” ilmainen?
Kyllä – oppitunnin ”UNION ALL vs UNION (kaksoiskappaleiden poiston kustannus)” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”UNION ALL vs UNION (kaksoiskappaleiden poiston kustannus)”?
Ymmärtäkää UNIONin tekemän kaksoiskappaleiden poiston työmäärä ja miksi UNION ALL on nopeampi, kun tiedätte, ettei kaksoiskappaleita ole. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”UNION ALL vs UNION (kaksoiskappaleiden poiston kustannus)”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?
Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- UNION, INTERSECT, EXCEPT
- UNION ALL vs UNION (kaksoiskappaleiden poiston kustannus)
- CASE-lausekkeet ja pivot-kyselyt
- Ristiintaulukointimallit (PostgreSQL crosstab())