Od: Greg Robidoux | Aktualizováno: 2019-10-29 | Komentáře (4) | Související: 1 | 2 | 3 | 4 | 5 | > PŘIPOJIT Tabulky
Někdy je třeba kombinovat údaje z více tabulek nebo zobrazení intoone komplexní dataset. To může být pro tabulky s podobnými daty v rámci samedatabase nebo možná je třeba kombinovat podobná data napříč databázemi nebo servery evenacross.
v tomto tipu se podíváme na to, jak používat příkazy UNION vs. UNIONALL a jak se liší.,
Řešení
V SQL Server, máte možnost kombinovat více datových souborů do jednoho comprehensivedataset pomocí UNIE nebo UNIE VŠECHNY operátory. Tam je velký rozdíl ojak tyto práce, stejně jako konečný výsledek sada, která je vrácena, ale v podstatě thesecommands připojit více souborů dat, které mají podobné struktury do jednoho kombinovaný dataset.
UNION
tato operace vám umožní připojit multipledatasets do jedné datové sady a odstraní všechny duplikáty, které existují. Basicallyit provádí zřetelnou operaci napříč všemi sloupci v sadě výsledků.,
UNION ALL
Tato operace opět umožňuje připojitmultiple datové sady do jedné datové sady, ale neodstraní žádné duplicitní řádky.Protože to neodstraňuje duplicitní řádky, je tento proces rychlejší, ale pokud nechcete duplicitní záznamy, budete muset místo toho použít operátora unie.,h dotazu, musí mít stejný počet sloupců
Tip: Pokud nechcete mít stejné sloupce ve všech dotazy použijte výchozí hodnotu, nebo hodnotu NULL, jako jsou:
SELECT firstName, lastName, company FROM businessContactsUNIONSELECT firstName, lastName, NULL FROM nonBusinessContactsorSELECT firstName, lastName, createDate FROM businessContactsUNION ALLSELECT firstName, lastName, getdate() FROM nonBusinessContacts
UNIE vs., UNION všechny příklady
podívejme se na několik jednoduchých příkladů toho, jak tyto příkazy fungují a jak se liší. Jak uvidíte závěrečné resultsets se bude lišit, ale tam je someinteresting informace o tom, jak SQL Server skutečně dokončí proces.
UNION ALL
v tomto prvním příkladu používáme UNION ALL operator proti Employeetable z databáze AdventureWorks. To pravděpodobně není něco, co byste udělaliale to pomáhá ilustrovat rozdíly těchto dvou operátorů.
v tabulce dbo je 290 řádků.Zaměstnanec.,
SELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.EmployeeUNION ALLSELECT * FROM HumanResources.Employee
při spuštění tohoto dotazu má sada výsledků 870 řádků. Toto je 290 řádků vrácených3 krát. Data jsou jen dát dohromady jeden dataset na vrcholu druhé datové sady.
zde je plán provádění tohoto dotazu. Vidíme, že tabulka byla dotazována3 krát a SQL Server provedl Zřetězovací krok, aby zřetězil všechna data.
UNION
v tomto dalším příkladu využíváme operátora unie proti tabulce zaměstnanců z databáze AdventureWorks.,
SELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.EmployeeUNIONSELECT * FROM HumanResources.Employee
při spuštění tohoto dotazu má sada výsledků 290 řádků. I když jsme kombinovali data třikrát, operátor unie odstranil duplicitní záznamy a tím získal jen 290 unikátních řádků.
zde je plán provádění tohoto dotazu. Vidíme, že SQL Server nejprve dotazoval2 tabulek, pak provedl operaci sloučení spojit spojit kombinovat první dvě tabulkya pak to udělal další sloučení spojit spolu s dotazem na třetí tabulku v dotazu.,Takže můžeme vidět, že byl mnohem více pracoval, které musely být provedeny, aby si tuto množinu výsledků ve srovnání s UNION ALL.
UNIE vs. UNIE, VŠECHNY Příklady Se Nějak na Seskupený Index Sloupce
Pokud vezmeme tento krok dál a udělat JAKÝSI dat pomocí ClusteredIndex sloupci dostaneme tyto exekuční plány. Z toho můžeme vidět, že executionplan, který SQL Server používá, je pro každou z těchto operací totožný, i když konečné sady výsledků budou stále obsahovat 870 řádků pro UNION ALL a 290 řádků pro Unii.,
UNION ALL plnění plánu se nějak na seskupený index sloupce
UNIE prováděcího plánu se nějak na seskupený index sloupce
UNIE vs. UNIE, VŠECHNY Příklady Se Nějak na Non-indexovaných Sloupců
Zde je další příklad dělá to samé, ale tentokrát to dělá NĚJAK na anon indexovaný sloupec. Jak vidíte, plány provádění jsou pro ně opět identickédvě dotazy, ale tentokrát namísto použití spojení sloučení se používá zřetězení a Sortoperace.,
- podívejte se na tyto jiné tipy, které mohou být užitečné pro použití na hospodářské subjekty v unii
- Porovnání Více datových souborů s INTERSECTand KROMĚ operátorů
- SQL Server Čtyři-část pojmenování
- Porovnejte SQL Server Výsledky Dvou Dotazů pomocí UNION.
Poslední aktualizace: 2019-10-29
O autorovi
Zobrazit všechny moje tipy
Leave a Reply