De: Greg Robidoux | Actualizat: 2019-10-29 | Comentarii (4) | Legate: 1 | 2 | 3 | 4 | 5 | Mai > se ALĂTURE Tabele
Probleme
Uneori, există o nevoie de a combina date din mai multe tabele sau vederi intoone setul de date cuprinzătoare. Acest lucru poate fi pentru tabele cu date similare în cadrul samedatabase sau poate că este nevoie de a combina date similare în bazele de date sau servere evenacross.
În acest sfat vom arunca o privire asupra modului de utilizare a comenzilor UNION vs.UNIONALL și a modului în care acestea diferă.,
soluție
în SQL Server aveți posibilitatea de a combina mai multe seturi de date într-un singur comprehensivedataset prin utilizarea Uniunii sau Uniunii toți operatorii. Există o mare diferență inhow aceste lucru, precum și rezultatul final stabilit care este returnat, dar practic thesecommands se alăture mai multe seturi de date care au structuri similare combinate într-un singur set de date.această operație vă va permite să vă alăturați multipledatasets într-un singur set de date și va elimina orice duplicate care există. Practicefectuează o operație distinctă pe toate coloanele din setul de rezultate.,
UNION ALL
această operație vă permite din nou să vă alăturațimai multe seturi de date într-un singur set de date, dar nu elimină niciun rând duplicat.Deoarece acest lucru nu elimină rândurile duplicate, acest proces este mai rapid, dar dacă nu doriți înregistrări duplicate, va trebui să utilizați operatorul Uniunii.,h interogare trebuie să aibă același număr de coloane
Sfat: Dacă nu aveți exact aceleași coloane în toate interogările de a utiliza o valoare implicită sau o valoare NULĂ, cum ar fi:
SELECT firstName, lastName, company FROM businessContactsUNIONSELECT firstName, lastName, NULL FROM nonBusinessContactsorSELECT firstName, lastName, createDate FROM businessContactsUNION ALLSELECT firstName, lastName, getdate() FROM nonBusinessContacts
UNIUNE vs, Uniune toate exemplele
să aruncăm o privire la câteva exemple simple despre modul în care funcționează aceste comenzi și cumacestea diferă. După cum veți vedea rezultatul finalseturile vor diferi, dar există uneleinformații interesante despre modul în care SQL Server finalizează efectiv procesul.
UNION ALL
în acest prim exemplu folosim operatorul UNION ALL împotriva Employeetable din Baza de date AdventureWorks. Acest lucru nu este, probabil, ceva ce woulddo, dar acest lucru ajută la ilustrarea diferențelor dintre acești doi operatori.
există 290 de rânduri în tabelul dbo.Angajat.,
SELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.Employee
când se execută această interogare, setul de rezultate are 870 de rânduri. Acestea sunt cele 290 de rânduri returnatede 3 ori. Datele sunt doar puse împreună un set de date pe partea de sus a celuilalt set de date.
iată planul de execuție pentru această interogare. Putem vedea că tabelul a fost interogat de 3 ori și SQL Server a făcut un pas de concatenare pentru a concatena toate datele.
UNIUNE
În acest exemplu vom folosi UNIUNII operator împotriva Angajatului tableagain din AdventureWorks baza de date.,
SELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.Employee
când se execută această interogare, setul de rezultate are 290 de rânduri. Chiar dacă am combinat datele de trei ori, operatorul Uniunii a eliminat înregistrările duplicate și, prin urmare, întoarce doar cele 290 de rânduri unice.
iată planul de execuție pentru această interogare. Putem vedea că SQL Server prima queried2 de mese, apoi a făcut o Unificare se Alăture operațiunii de a combina primele două tablesand apoi a făcut o altă Îmbinare se Alăture, împreună cu interogarea cea de-a treia masă în interogare.,Deci, putem vedea că a fost mult mai lucrat, care a trebuit să fie efectuate pentru a obține acest resultset în comparație cu Uniunea toate.
UNIUNE vs UNIUNEA TOATE Exemplele Cu un Fel pe Cluster de Index Coloana
Dacă am lua acest un pas mai departe și de a face un FEL de date folosind ClusteredIndex coloană vom obține aceste planurile de execuție. Din aceasta putem vedea că executionplan pe care SQL Server îl utilizează este identic pentru fiecare dintre aceste operațiuni, chiar dacă seturile de rezultate finale vor conține în continuare 870 de rânduri pentru Uniune și 290 de rânduri pentru Uniune.,
UNION ALL plan de execuție cu un fel pe cluster de index coloana
UNIUNEA plan de execuție cu un fel pe cluster de index coloana
UNIUNE vs UNIUNEA TOATE Exemplele Cu un Fel de Non-indexate Coloana
Aici este un alt exemplu de a face același lucru, dar de data asta fac un FEL pe anon indexate coloana. După cum puteți vedea, planurile de execuție sunt din nou identice pentru acesteadouă interogări, dar de data aceasta, în loc să utilizați un îmbinare, se utilizează o concatenare și o Sortoperații.,
- să Ia o privire la aceste alte sfaturi care pot fi utile pentru utilizarea uniunii operatorii
- Compararea mai multor Seturi de date cu INTERSECTand cu EXCEPȚIA operatorilor
- SQL Server Patru-parte de numire
- Compara SQL Server Rezultatele a Două Interogări folosind UNIUNII
Ultima Actualizare: 2019-10-29
Despre autor
Vezi toate sfaturile mele
Leave a Reply