SQL - Registros distintos en dos Tablas

 
Vista:

Registros distintos en dos Tablas

Publicado por Juan (19 intervenciones) el 16/05/2007 16:30:54
Tengo dos tablas las cuales una contiene registros no repetidos y la segunda una serie de registros para agregar a la primera si no existiesen en la misma.

Por ahora lo que vengo haciendo para actualizar la primera tabla es:

INSERT INTO TABLA1(CAMPO1) SELECT DISTINCT CAMPO2 FROM TABLA2 WHERE CAMPO2 NOT IN (SELECT CAMPO1 FROM TABLA1)

Esta consulta requiere mucho tiempo en completarse. Hace unos días encontré una solución distinta en el foro, pero no logro ubicarla de nuevo. Alguien sabría como optimizar esta consulta (los campos de la tabla son texto y contienen unos 1000 o 2000 registros en total)

Saludos y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Registros distintos en dos Tablas

Publicado por Isaías (5072 intervenciones) el 16/05/2007 18:41:46
CAMPO1 es INDICE?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registros distintos en dos Tablas

Publicado por Juan (19 intervenciones) el 16/05/2007 21:36:27
CAMPO1 lo puse como ejemplo, en realidad tanto las tablas como los campos llevan otro nombre. El SQL sería en realidad así:

INSERT INTO LISTA(TAG) SELECT DISTINCT TEMP FROM TEMP WHERE
TEMP NOT IN (SELECT TAG FROM LISTA)

La tabla LISTA contiene el campo TAG y la tabla TEMP contiene el campo TEMP
El objetivo, como dije antes, es optimizar la consulta que si bien funciona, con varios registros se torna muy lenta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registros distintos en dos Tablas

Publicado por Isaías (5072 intervenciones) el 16/05/2007 21:48:36
Asi lo habia entendido, entonces mi pregunta SIGUE IGUAL, solo cambia el nombre del campo

TAG es INDICE?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registros distintos en dos Tablas

Publicado por Juan (19 intervenciones) el 16/05/2007 22:07:40
TAG es el campo o columna. No entiendo bien cuando te referís a índice.

TAG sería el campo Destino donde se insertarían los nuevos registros de la Tabla TEMP, siempre y cuando contuviese registros que TAG no los tuviese.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registros distintos en dos Tablas

Publicado por Isaías (5072 intervenciones) el 16/05/2007 23:55:30
Una pregunta para seguir o detenerme en este hilo, ¿Manejas como base de datos SQL SERVER de Microsoft?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registros distintos en dos Tablas

Publicado por Juan (19 intervenciones) el 17/05/2007 00:07:16
Estoy utilizando Access, no me permiten utilizar otra base en el trabajo (la base oficial es Oracle, estas son herramientas propias)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registros distintos en dos Tablas

Publicado por Juan (19 intervenciones) el 17/05/2007 00:59:48
Reintenté utilizar un JOIN para hacer la consulta y probando y buscando en el foro encontré esta forma:

INSERT INTO TDEST(CDEST) SELECT A.CORIG FROM TORIG A LEFT JOIN TDEST B ON A.CORIG=B.CDEST AND B.CDEST IS NULL

TORIG --> Tabla Origen
TDEST --> Tabla Destino
CORIG --> Campo Origen
CDEST --> Campo Destino

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registros distintos en dos Tablas

Publicado por Isaías (5072 intervenciones) el 17/05/2007 01:16:52
Access tiene algunas (por no decir muchas) limitaciones, te recomiendo que te subas a SQL SERVER 2005 EXPRESS EDITION WITH ADVANCED SERVICES, esta al igual que access es libre de cargo y es un motor de base de datos, a diferencia de access que es un manejador de escritorio.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registros distintos en dos Tablas

Publicado por Juan (19 intervenciones) el 17/05/2007 02:02:19
Si tenés razón en lo que decís. En otra oportunidad me comentaste lo mismo. Lamentablemente por el momento no puedo, pero voy a ver si en casa lo ojeo un poco.

Lo que me sorprendió lo MUCHO que cambia la performance de la consulta al hacerla con un JOIN. Sin exagerar llega a ser casi 4000 veces más rapida (medí el tiempo de la primera consulta en unos 60 seg y ésta última tan solo 0,015 segundos). Impresionante.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar