9 Stimmen

zwei Tabellen zu einer großen Tabelle verbinden

Ich habe zwei Tabellen mit denselben Spalten, und ich muss die Zeilen der einen Tabelle in die Zeilen der anderen Tabelle kopieren, um eine große Tabelle mit allen Werten aus beiden Tabellen zu erstellen. Im Moment mache ich diese Abfrage, um das Gleiche zu erhalten:

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

Es scheint jedoch furchtbar ineffizient zu sein und ist auf meinem System sehr langsam (liefert 1210189 Datensätze).

11voto

Tommy Punkte 368

Möge es funktionieren, einfach zu tun:

SELECT col1, col2, col3 
INTO Table1
FROM Table2

11voto

Dustin Punkte 85400

Beginnen Sie mit Union all:

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

Ihre Abfrage versucht, Dinge zu deduplizieren, was sie erheblich verlangsamen würde.

4 Stimmen

Ich bin mir ziemlich sicher, dass "deduplicate" ein erfundenes Wort ist :-)

2 Stimmen

Wir verwenden das Wort "Deduplizierung" (kurz für deduplicate) bei der Arbeit die ganze Zeit :)

2 Stimmen

Datenvervielfältigung ist ein Standardbegriff in den Bereichen Data Warehousing und Speicherung/Backup.

3voto

Hosam Aly Punkte 40063

Damit können Sie die zweite Tabelle füllen:

Insert into table2 select * from table1;

Oder wenn Sie genauer sein wollen:

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

(Hinweis: Bei einigen DBMS muss die SELECT-Klausel möglicherweise in Klammern gesetzt werden).

2voto

netadictos Punkte 7524

Ich denke, die beste Option ist, eine Ansicht in Sql-Server zu erstellen, dies wird die Leistung der Abfrage zu optimieren:

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

(Wie andere Nutzer sagten: "union" wird verwendet, um unterschiedliche Werte aus zwei Tabellen auszuwählen wogegen "union all" verwendet wird, um alle Werte einschließlich Duplikate aus den Tabellen auszuwählen.)

Gleichzeitig würde ich die Anzahl der Zeilen, die ich aus der Datenbank erhalte, einschränken, wenn ich sie für ein Web schreibe, und wenn mir dies Probleme bereitet, mit den neuen Funktionen von Sql Server 2005 zeilen_zahl() Damit würde ich Ergebnisse ausgeben.

0voto

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

Hier können Sie die gewünschten Spalten angeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X