Av: Greg Robidoux | Oppdatert: 2019-10-29 | Comments (4) | – Relaterte: 1 | 2 | 3 | 4 | 5 | Mer > BLI med Tabeller
Problem
noen Ganger er det behov for å kombinere data fra flere tabeller eller utsikt intoone omfattende datasett. Dette kan være for tabeller med tilsvarende data i samedatabase eller kanskje det er et behov for å kombinere lignende data i databaser eller evenacross servere.
I dette tipset vil vi ta en titt på hvordan du bruker UNION vs. UNIONALL kommandoer og hvordan de skiller seg.,
Løsning
I SQL Server-du har evnen til å kombinere flere datasett i en comprehensivedataset ved hjelp av UNION eller UNION ALLE operatører. Det er en stor forskjell inhow disse fungerer så godt som det endelige resultat som er returnert, men i utgangspunktet thesecommands bli flere datasett som har lignende strukturer i en kombinert dataset.
UNION
Denne operasjonen vil tillate deg å bli med multipledatasets i ett datasett og vil fjerne eventuelle dubletter som finnes. Basicallyit utfører en TYDELIG driften på tvers av alle kolonner i resultatsettet.,
UNION ALLE
Denne operasjonen igjen gir deg mulighet til å joinmultiple datasett i ett datasett, men det gjør ikke fjerne dupliserte rader.Fordi dette ikke fjerne dupliserte rader denne prosessen er raskere, men hvis youdon ikke vil duplikatoppføringer du trenger å bruke UNION-operatoren i stedet.,h spørring må ha samme antall kolonner
Tips: Hvis du ikke har nøyaktig samme kolonnene i alle spørringer bruker en standard verdi eller en NULL-verdi, for eksempel:
SELECT firstName, lastName, company FROM businessContactsUNIONSELECT firstName, lastName, NULL FROM nonBusinessContactsorSELECT firstName, lastName, createDate FROM businessContactsUNION ALLSELECT firstName, lastName, getdate() FROM nonBusinessContacts
UNION vs., UNION ALLE Eksempler på
La oss ta en titt på noen enkle eksempler på hvordan disse kommandoene arbeid og howthey forskjellige. Som du vil se de endelige resultsets vil variere, men det er someinteresting info om hvordan SQL Server faktisk fullfører prosessen.
UNION ALLE
I dette første eksempelet vi bruker UNION ALLE operatøren mot Employeetable fra AdventureWorks database. Dette er nok ikke noe du woulddo, men dette bidrar til å illustrere forskjellene på disse to operatører.
Det er 290 rader i tabellen dbo.Ansatte.,
SELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.Employee
Når dette søket er kjørt resultat sett har 870 rader. Dette er 290 rader returned3 ganger. Dataene er bare satt sammen en dataset på toppen av andre datasett.
Her er gjennomføringsplan for dette søket. Vi kan se at bordet var queried3 ganger og SQL Server gjorde en Sammensetting trinn til å slå sammen alle data.
UNION
I det neste eksempelet vi bruker UNION-operatoren mot den Ansatte tableagain fra AdventureWorks database.,
SELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.Employee
Når dette søket er kjørt resultat sett har 290 rader. Selv om vi kombinerte thedata tre ganger UNION-operatoren fjernet duplikatoppføringer og thereforereturns bare 290 unike rader.
Her er gjennomføringsplan for dette søket. Vi kan se at SQL Server første queried2 av tabeller, gjorde en Flette Join-operasjon for å kombinere de to første tablesand så det gjorde et Fusjonere Delta sammen med spørring etter den tredje tabellen i søket.,Så kan vi se at det var mye mer arbeidet som måtte utføres for å få dette resultset i forhold til UNION ALLE.
UNION vs. UNION ALLE Eksempler på Sorter på Samlet Indeks Kolonne
Hvis vi tar dette en skritt videre og gjøre en slags data ved hjelp av ClusteredIndex kolonnen får vi disse gjennomføringsplaner. Ut fra dette kan vi se at executionplan at SQL-Serveren bruker er det samme for hver av disse operasjonene selv thoughthe endelige resultatet sett vil fortsatt inneholde 870 rader for UNIONEN ALLE og 290 rowsfor UNIONEN.,
UNION ALLE gjennomføringsplan med å sortere på samlet indeks kolonne
UNION gjennomføringsplan med å sortere på samlet indeks kolonne
UNION vs. UNION ALLE Eksempler på Sorter på Ikke-indekserte Kolonnen
Her er et annet eksempel gjør det samme, men denne gangen gjør et slag på anon indeksert kolonne. Som du kan se gjennomføringsplan er igjen identiske for thesetwo spørsmål, men denne gangen i stedet for å bruke en FLETTE BLI med, en SAMMENSETTING og SORToperations er brukt.,
- Ta en titt på disse andre tips som kan være nyttige for å bruke union operatører
- Sammenligning av Flere Datasett med INTERSECTand BORTSETT fra operatører
- SQL Server-Fire-del navngi
- Sammenlign for SQL Server Resultatene av To Spørringer ved hjelp av UNION
Sist Oppdatert: 2019-10-29
Om forfatteren
Vis alle mine tips
Leave a Reply