Voorbereiding op SQL-sollicitatiegesprekken · Les

UNION versus UNION ALL

Het verschil in ontdubbeling en prestaties, en waarom UNION ALL meestal de bedoeling is

Les 1 van 413 stappen

UNION versus UNION ALL is een gratis Voorbereiding op SQL-sollicitatiegesprekken-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op SQL-sollicitatiegesprekken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

Waarom interviewers naar UNION vragen

Setbewerkingen stapelen het ene resultaat onder het andere, verticaal. UNION en UNION ALL zijn de eerste setoperatoren waar interviewers naar grijpen, omdat het verschil ertussen in één regel kan worden uitgelegd en laat zien of je de kosten begrijpt.

De vraag luidt bijna altijd: "Wat is het verschil tussen UNION en UNION ALL, en welke moet je gebruiken?" Een sterk antwoord noemt in één adem deduplicatie, ordening en prestaties.

Wat UNION doet

UNION combineert de rijen van twee queries tot één resultaatset en verwijdert daarna dubbele rijen. Twee rijen zijn alleen duplicaten als elke kolom overeenkomt.

Om duplicaten te verwijderen, moet de engine alle gecombineerde rijen sorteren of hashen, en dat kost daadwerkelijk werk. UNION levert een verzameling in wiskundige zin op: zonder herhalingen.

SELECT city FROM customers
UNION
SELECT city FROM suppliers;

Wat UNION ALL doet

UNION ALL voegt de twee resultaatsets samen en behoudt elke rij, inclusief duplicaten. Er vindt geen deduplicatie plaats, dus voor dat doel hoeft er niet te worden gesorteerd of gehasht.

Omdat de deduplicatiestap wordt overgeslagen, is UNION ALL bijna altijd sneller. Het is de juiste keuze als je weet dat rijen elkaar niet kunnen overlappen of als duplicaten juist gewenst zijn.

SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers;

Het prestatieverschil

De kern voor het interview: UNION ALL is goedkoper omdat er nooit wordt gededupliceerd. UNION moet elke gecombineerde rij met alle andere vergelijken om herhalingen te verwijderen.

  • UNION = UNION ALL + een impliciete DISTINCT-stap.
  • Bij grote resultaatsets kan die DISTINCT-stap het grootste deel van de querykosten veroorzaken.

Als je geen duplicaten hoeft te verwijderen, verspil je CPU en geheugen door UNION te gebruiken.

Uitgewerkt voorbeeld met duplicaten

Stel dat beide queries de rij 'Paris' kunnen teruggeven. Met UNION krijg je één Paris. Met UNION ALL krijg je Paris twee keer.

Interviewers vragen je graag om het aantal rijen te voorspellen. Stel je altijd eerst de onbewerkte samenvoeging voor en vraag je daarna af: verwijdert de operator de herhalingen?

-- customers.city: Paris, Lyon
-- suppliers.city: Paris, Nice
-- UNION     -> Paris, Lyon, Nice   (3 rows)
-- UNION ALL -> Paris, Lyon, Paris, Nice (4 rows)

Duplicaten worden bepaald over alle kolommen

Een veelvoorkomende valkuil: twee rijen zijn alleen duplicaten als elke geselecteerde kolom gelijk is. Voeg één kolom met een afwijkende waarde toe en de rijen zijn geen duplicaten meer, waardoor UNION beide behoudt.

Daarom geeft SELECT id, city bij UNION vaak meer rijen terug dan SELECT city, zelfs bij dezelfde tabellen.

SELECT id, city FROM customers
UNION
SELECT id, city FROM suppliers;
-- ids differ -> few or no duplicates removed

Het gecombineerde resultaat ordenen

Je kunt ORDER BY niet op de afzonderlijke querytakken plaatsen; het is van toepassing op het hele gecombineerde resultaat en moet één keer helemaal aan het einde staan.

Een interviewer kan vragen waar ORDER BY thuishoort. Het antwoord is: één ORDER BY na de laatste query, die naar de uitvoerkolommen verwijst op naam of op positie.

SELECT city FROM customers
UNION ALL
SELECT city FROM suppliers
ORDER BY city;

Kolomnamen komen uit de eerste query

Wanneer je in de uiteindelijke ORDER BY naar kolommen verwijst, gebruik je de namen of aliassen uit de eerste SELECT. De kolomnamen van de tweede query worden genegeerd voor de labels van de uitvoer.

Dit is belangrijk wanneer de takken hun kolommen anders benoemen. Geef de eerste tak een alias om de koptekst van de uitvoer te bepalen.

SELECT city AS location FROM customers
UNION ALL
SELECT town FROM suppliers
ORDER BY location;

Wanneer UNION de juiste keuze is

Gebruik UNION alleen wanneer overlappende rijen daadwerkelijk kunnen voorkomen en je elke unieke rij één keer wilt. Voorbeelden zijn het samenvoegen van twee contactlijsten waarin dezelfde persoon in beide kan voorkomen, of het maken van een ontdubbelde lijst met unieke waarden uit meerdere bronnen.

Als je kunt garanderen dat de bronnen elkaar uitsluiten, levert UNION ALL hetzelfde resultaat sneller op.

SELECT email FROM web_signups
UNION
SELECT email FROM store_signups;
-- one row per distinct email across both

Wanneer UNION ALL de juiste keuze is

Gebruik UNION ALL wanneer duplicaten niet kunnen voorkomen, wanneer duplicaten betekenisvol zijn of wanneer je daarna gaat aggregeren. Een klassiek patroon is het stapelen van maandelijkse partitietabellen die geen rijen gemeen hebben.

Tip voor sollicitatiegesprekken: zeg dat UNION ALL de standaardkeuze is en dat je alleen voor UNION kiest wanneer ontdubbeling echt nodig is.

SELECT * FROM sales_2023
UNION ALL
SELECT * FROM sales_2024;

Alles bij elkaar brengen

Een goed geformuleerd antwoord in een sollicitatiegesprek klinkt bijvoorbeeld zo: "UNION verwijdert dubbele rijen, waarvoor een sortering of hashbewerking nodig is; UNION ALL behoudt alles en is sneller. Beide vereisen hetzelfde aantal kolommen en compatibele typen, en elke ORDER BY komt één keer aan het einde. Ik kies standaard voor UNION ALL, tenzij ontdubbeling nodig is."

Met die ene zin laat je zowel zien dat je correct werkt als dat je aandacht hebt voor prestaties.

Snelle controle

Toets je begrip van het verschil tussen UNION en UNION ALL.

Samenvatting

Belangrijkste punten:

  • UNION = combineren en dubbele rijen verwijderen (impliciete DISTINCT, extra kosten).
  • UNION ALL = combineren en alles behouden, sneller en de verstandige standaardkeuze.
  • Voor duplicaten moeten alle kolommen overeenkomen.
  • Eén ORDER BY komt helemaal aan het einde en gebruikt de kolomnamen van de eerste query.

Kies standaard voor UNION ALL; gebruik UNION alleen wanneer ontdubbeling echt nodig is.

Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “UNION versus UNION ALL” gratis?

Ja — de volledige tekst van “UNION versus UNION ALL” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op SQL-sollicitatiegesprekken wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

Wat leer ik in “UNION versus UNION ALL”?

Het verschil in ontdubbeling en prestaties, en waarom UNION ALL meestal de bedoeling is Je oefent met Voorbereiding op SQL-sollicitatiegesprekken door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Voorbereiding op SQL-sollicitatiegesprekken te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op SQL-sollicitatiegesprekken op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “UNION versus UNION ALL”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op SQL-sollicitatiegesprekken?

Ja. Elke les over Voorbereiding op SQL-sollicitatiegesprekken bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. UNION versus UNION ALL
  2. Compatibiliteit van aantal en typen kolommen
  3. INTERSECT en EXCEPT voor vergelijkingen
  4. Setbewerkingen nabootsen met joins
← Terug naar Voorbereiding op SQL-sollicitatiegesprekken