2008-11-29 15 views
7

Tengo dos tablas con las mismas columnas, y necesito copiar las filas de una tabla a las filas de la otra tabla para crear una tabla grande con todos los valores de ambas tablas. En este momento estoy haciendo esta consulta para devolver la misma cosa:unir dos tablas en una gran tabla

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

Sin embargo, parece terriblemente ineficiente, y en mi sistema es muy lento (retornos 1210189 registros).

Respuesta

10

Puede que trabajar con sólo hacer:

SELECT col1, col2, col3 
INTO Table1 
FROM Table2 
9

de inicio con la unión de todo:

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

Su consulta está tratando de deduplicar cosas, lo que reducir la velocidad considerablemente.

+3

Estoy bastante seguro de que deduplicate es una palabra inventada :-) – paxdiablo

+2

Cada palabra debe estar compuesta en algún momento. :) – Dustin

+2

Usamos la palabra 'dedupe' (abreviatura de deduplicado) en el trabajo todo el tiempo :) –

0

Creo que la mejor opción es crear una vista en SQL Server, esto va a optimizar el rendimiento de la consulta:

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

(Como dijeron otros usuarios: "unión" se utiliza para seleccionar los valores distintos de dos mesas donde como "unión de todo" se utiliza para seleccionar todos los valores incluidos duplicados de las tablas.)

al mismo tiempo que tienda a limitar el número de filas que obtienen de la base de datos si les escribo para una web y si esto me está dando problemas, con las nuevas funciones de Sql Server 2005 row_number(), con esto me gustaría resultados de la página.

1

Usted puede usar esto para llenar la segunda tabla:

Insert into table2 select * from table1; 

O si quieres ser más específico:

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

(Nota: algunos DBMS puede requerir poner paréntesis alrededor de la cláusula SELECT .)

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

aquí las columnas pueden ser sus columnas requeridas.

Cuestiones relacionadas