UNION ja UNION ALL
Deduplikoinnin ja suorituskyvyn erot sekä se, miksi UNION ALL on yleensä tarkoitettu
UNION ja UNION ALL on ilmainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti CoddyKitissä. Tämä on oppitunti 1/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 Valmistautuminen ohjelmointihaastatteluihin-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.
Miksi haastattelijat kysyvät UNION-operaatiosta
Joukko-operaatiot pinoavat yhden tulosjoukon toisen päälle pystysuunnassa. UNION ja UNION ALL ovat ensimmäisiä joukko-operaattoreita, joista haastattelijat kysyvät, koska niiden välinen ero on yhden lauseen mittainen ja paljastaa, ymmärrättekö kyselyn kustannukset.
Kysymys esitetään lähes aina muodossa: "Mikä on UNION- ja UNION ALL -operaattoreiden ero, ja kumpaa pitäisi käyttää?" Vahvassa vastauksessa mainitaan yhdellä kertaa duplikaattien poisto, järjestäminen ja suorituskyky.
Mitä UNION tekee
UNION yhdistää kahden kyselyn rivit yhdeksi tulosjoukoksi ja poistaa duplikaattirivit. Kaksi riviä on duplikaatteja vain, jos kaikki niiden sarakkeet täsmäävät.
Duplikaattien poistamiseksi tietokantamoottorin on lajiteltava tai hajautettava kaikki yhdistetyt rivit, mikä kuluttaa resursseja. UNION palauttaa matemaattisessa mielessä joukon: toistuvia rivejä ei ole.
SELECT city FROM customers
UNION
SELECT city FROM suppliers;Mitä UNION ALL tekee
UNION ALL ketjuttaa kaksi tulosjoukkoa ja säilyttää jokaisen rivin, myös duplikaatit. Se ei poista duplikaatteja, joten se ei myöskään lajittele tai hajauta rivejä tätä tarkoitusta varten.
Koska duplikaattien poistovaihe jää pois, UNION ALL on lähes aina nopeampi. Se on oikea valinta, kun tiedätte, etteivät rivit voi olla päällekkäisiä tai kun duplikaatit halutaan säilyttää.
SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers;Suorituskykyero
Haastattelussa tärkein asia on tämä: UNION ALL on kevyempi, koska se ei koskaan poista duplikaatteja. UNIONin on verrattava kaikkia yhdistettyjä rivejä toisiinsa toistuvien rivien poistamiseksi.
UNION= UNION ALL + implisiittinen DISTINCT-vaihe.- Suurissa tulosjoukoissa DISTINCT voi muodostaa suurimman osan kyselyn kustannuksista.
Jos duplikaatteja ei tarvitse poistaa, UNIONin käyttäminen kuluttaa turhaan suorittimen aikaa ja muistia.
Esimerkki duplikaateista
Oletetaan, että molemmat kyselyt voivat palauttaa rivin 'Paris'. Käytettäessä UNION-operaattoria saatte yhden rivin Paris. Käytettäessä UNION ALL -operaattoria saatte Paris-rivin kahdesti.
Haastattelijat kysyvät mielellään, kuinka monta riviä palautuu. Kuvitelkaa ensin raaka ketjutettu tulos ja kysykää sitten: poistaako operaattori toistuvat rivit?
-- customers.city: Paris, Lyon
-- suppliers.city: Paris, Nice
-- UNION -> Paris, Lyon, Nice (3 rows)
-- UNION ALL -> Paris, Lyon, Paris, Nice (4 rows)Duplikaatit määritellään kaikkien sarakkeiden perusteella
Yleinen sudenkuoppa on tämä: kaksi riviä on duplikaatteja vain, jos jokainen valittu sarake on sama. Jos lisäätte yhden eriävän sarakkeen, rivit eivät enää ole duplikaatteja, joten UNION säilyttää molemmat.
Siksi SELECT id, city palauttaa UNION-operaatiossa usein enemmän rivejä kuin SELECT city, vaikka kyselyt kohdistuisivat samoihin tauluihin.
SELECT id, city FROM customers
UNION
SELECT id, city FROM suppliers;
-- ids differ -> few or no duplicates removedYhdistetyn tuloksen järjestäminen
ORDER BY -lausetta ei voi sijoittaa yksittäisiin haaroihin. Se koskee koko yhdistettyä tulosta, ja sen on oltava mukana kerran, aivan lopussa.
Haastattelija saattaa kysyä, mihin ORDER BY sijoitetaan. Vastaus on: yksi ORDER BY viimeisen kyselyn jälkeen, ja siinä viitataan tulossarakkeisiin nimen tai sijainnin perusteella.
SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers
ORDER BY city;Sarakkeiden nimet tulevat ensimmäisestä kyselystä
Kun lopullisessa ORDER BY-lausekkeessa viitataan sarakkeisiin, käyttäkää ensimmäisen SELECT-lauseen nimiä (tai aliaksia). Toisen kyselyn sarakkeiden nimiä ei käytetä tulosteen otsakkeissa.
Tällä on merkitystä, kun haaroissa sarakkeilla on eri nimet. Määrittäkää ensimmäisen haaran sarakkeille aliakset, jotta voitte hallita tulosteen otsakkeita.
SELECT city AS location FROM customers
UNION ALL
SELECT town FROM suppliers
ORDER BY location;Milloin UNION on oikea valinta
Käyttäkää UNION-operaattoria vain, kun päällekkäisiä rivejä voi aidosti esiintyä ja haluatte kunkin yksilöllisen rivin vain kerran. Esimerkkejä ovat kahden yhteystietoluettelon yhdistäminen, kun sama henkilö voi esiintyä molemmissa, tai yksilöllisten arvojen duplikaatitonta luetteloa muodostaminen useista lähteistä.
Jos voitte taata, että lähteet ovat erillisiä, UNION ALL tuottaa saman tuloksen nopeammin.
SELECT email FROM web_signups
UNION
SELECT email FROM store_signups;
-- one row per distinct email across bothMilloin UNION ALL on oikea valinta
Käyttäkää UNION ALL -operaattoria, kun duplikaatteja ei voi esiintyä, kun duplikaatit ovat merkityksellisiä tai kun aiotte tehdä aggregoinnin myöhemmin. Tyypillinen esimerkki on sellaisten kuukausittaisten osioitujen taulujen pinoaminen, joissa ei ole samoja rivejä.
Haastatteluvinkki: mainitkaa, että UNION ALL on oletusvalinta ja UNION-operaattoria käytetään vasta, kun duplikaattien poistoa todella tarvitaan.
SELECT * FROM sales_2023
UNION ALL
SELECT * FROM sales_2024;Kootaan kokonaisuudeksi
Hiottu haastatteluvastaus kuulostaa tältä: "UNION poistaa duplikaattirivit, mikä edellyttää lajittelua tai hajautusta; UNION ALL säilyttää kaikki rivit ja on nopeampi. Molemmissa haaroissa on oltava sama määrä sarakkeita ja yhteensopivat tyypit, ja mahdollinen ORDER BY kirjoitetaan kerran loppuun. Oletuksena käytän UNION ALL -operaattoria, ellei duplikaattien poistoa tarvita."
Tämä yksi lause osoittaa samanaikaisesti, että ymmärrätte oikeellisuuden ja suorituskyvyn merkityksen.
Pikatarkistus
Testatkaa, kuinka hyvin ymmärrätte UNION- ja UNION ALL -operaattoreiden eron.
Kertaus
Tärkeimmät opit:
UNION= yhdistää ja poistaa duplikaattirivit (implisiittinen DISTINCT, ylimääräinen kustannus).UNION ALL= yhdistää ja säilyttää kaikki rivit, on nopeampi ja järkevä oletusvalinta.- Duplikaattien määrittämiseksi kaikkien sarakkeiden on täsmättävä.
- Yksi
ORDER BYkirjoitetaan aivan loppuun, ja siinä käytetään ensimmäisen kyselyn sarakkeiden nimiä.
Käyttäkää oletuksena UNION ALL -operaattoria ja valitkaa UNION vasta, kun duplikaattien poistoa todella tarvitaan.
Opi Valmistautuminen ohjelmointihaastatteluihin 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
- 90
- Oppitunnit
- 360
Usein kysytyt kysymykset
Onko oppitunti ”UNION ja UNION ALL” ilmainen?
Kyllä – oppitunnin ”UNION ja UNION ALL” 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 Valmistautuminen ohjelmointihaastatteluihin-kurssin, päivitä CoddyKit PROhon. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”UNION ja UNION ALL”?
Deduplikoinnin ja suorituskyvyn erot sekä se, miksi UNION ALL on yleensä tarkoitettu Harjoittelet Valmistautuminen ohjelmointihaastatteluihin-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Valmistautuminen ohjelmointihaastatteluihin-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Valmistautuminen ohjelmointihaastatteluihin-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”UNION ja UNION ALL”-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ä Valmistautuminen ohjelmointihaastatteluihin-oppitunnilla?
Kyllä. Jokainen Valmistautuminen ohjelmointihaastatteluihin-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 ja UNION ALL
- Sarakemäärän ja tyyppien yhteensopivuus
- INTERSECT ja EXCEPT vertailuun
- Joukko-operaatioiden jäljittely liitoksilla