2008-11-29 26 views
7

Mam dwie tabele z tymi samymi kolumnami i muszę skopiować wiersze jednego tabela do wierszy innego tabela, aby utworzyć jeden duży tabela z wszystkich wartości z obu tabel. Teraz robię to zapytanie do powrotu to samo:dołączyć dwie tabele do jednego dużego stołu

SELECT col1, col2, col3 from Table1 
union 
SELECT col1, col2, col3 from Table2 

Jednak wydaje się strasznie nieskuteczny, a w moim systemie jest bardzo powolny (powraca 1210189 Records).

Odpowiedz

10

Może to działa po prostu zrobić:

SELECT col1, col2, col3 
INTO Table1 
FROM Table2 
9

Uruchom z unii wszystkich:

select col1, col2, col3 from Table1 
union all 
select col1, col2, col3 from Table2 

Zapytanie próbuje deduplikuj rzeczy, które mogłyby spowolnić znacznie.

+3

Jestem prawie pewny, że deduplikacja jest wymyślonym słowem :-) – paxdiablo

+2

W pewnym momencie należy uzupełnić każde słowo. :) – Dustin

+2

W pracy używamy słowa "dedupe" (skrót od deduplikacji) w pracy :) –

0

Myślę, że najlepszym rozwiązaniem jest stworzenie widoku w serwera SQL, to zoptymalizować wydajność kwerendy:

SELECT col1, col2, col3 from Table1 
union all 
SELECT col1, col2, col3 from Table2 

(Jak inni użytkownicy powiedział: „Unia” jest używany do wyboru różne wartości od dwa stoły gdzie jako „zjednoczenie wszystkich” służy do wyboru wszystkie wartości w tym duplikatów z tabel.)

Jednocześnie chciałbym ograniczyć liczbę wierszy uzyskać z bazy danych, jeśli piszę je dla web i jeśli to daje mi problemy, z nowymi funkcjami Sql Server 2005 row_number(), z tym będę strona wyników.

1

Można to wykorzystać, aby wypełnić drugą tabelę:

Insert into table2 select * from table1; 

Albo jeśli chcesz być bardziej szczegółowe:

Insert into table2(col1, col2, col3) select col1, col2, col3 from table1; 

(Uwaga: niektóre DBMS mogą wymagać wprowadzenia nawiasów wokół klauzuli SELECT .)

0
select * into new table(your new table name) 
from table1.col1,table1.col2,table2.col1; 

kolumny tutaj mogą być wymaganymi kolumnami.

Powiązane problemy