Access - Registros en dos tablas

 
Vista:

Registros en dos tablas

Publicado por Juan (3 intervenciones) el 16/05/2007 13:47:17
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
Imágen de perfil de Alejandro

Optimizar la actualización de registros entre tablas

Publicado por Alejandro (4142 intervenciones) el 10/08/2023 17:23:33
Para optimizar la actualización de registros entre dos tablas en Access, especialmente cuando se trata de una cantidad considerable de registros, puedes probar con un enfoque diferente utilizando una combinación de la consulta `LEFT JOIN` y la función `INSERT INTO`.

Aquí tienes cómo podrías hacerlo:

1
2
3
4
5
INSERT INTO TABLA1 (CAMPO1)
SELECT DISTINCT TABLA2.CAMPO2
FROM TABLA2
LEFT JOIN TABLA1 ON TABLA2.CAMPO2 = TABLA1.CAMPO1
WHERE TABLA1.CAMPO1 IS NULL;

Este enfoque utiliza un `LEFT JOIN` para unir las dos tablas según el campo deseado (`CAMPO2` de `TABLA2` y `CAMPO1` de `TABLA1`). Luego, en la cláusula `WHERE`, seleccionamos solo los registros de `TABLA2` que no tienen coincidencias en `TABLA1` (es decir, los registros que no existen en la primera tabla).

Este enfoque tiende a ser más eficiente que la subconsulta y puede mejorar el rendimiento en comparación con la consulta original que estabas utilizando.

Recuerda hacer una copia de respaldo de tu base de datos antes de realizar cambios significativos en las consultas, para evitar la pérdida de datos en caso de algún problema.
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