Hola a todos!!
Tengo una consulta un poco dificil de afrontar, os explico:
Tenemos un servidor vinculado y quiero trarme una tabla que es la que tiene 5mil millones de registros, la primera vez me la traeré entera pero el resto de dias me traeré solo los registros que no están en la misma tabla de mi BD local.
Esta es mi consulta sql:
/*1º busco en el servidor remoto que registros no tengo en la tabla de mi servidor local y los inserto en una tabla temporal*/
SELECT TARJETA,TICKET,LINEA_TICKET,PRODUCTO
INTO #T1
FROM (
SELECT TARJETA,TICKET,LINEA_TICKET,PRODUCTO
FROM [172.12.1.268\SERVIDOR].BD_SERVIDOR.dbo.lineas_tickets
EXCEPT
SELECT TARJETA,TICKET,LINEA_TICKET,PRODUCTO
FROM dbo.lineas_tickets
) AS H
/*2º ahora inserto esos registros que me faltan en mi tabla del servidor local*/
INSERT INTO lineas_tickets
SELECT T.*
FROM #T1 AS T1
INNER JOIN [172.12.1.268\SERVIDOR].BD_SERVIDOR.dbo.lineas_tickets AS T
ON(T.TARJETA=T1.TARJETA AND T.TICKET=T1.TICKET AND T.LINEA_TICKET=T1.LINEA_TICKET AND T.PRODUCTO=T1.PRODUCTO)
NOTA 1: La clave primaria esta compuesta por:TARJETA,TICKET,LINEA_TICKET,PRODUCTO
NOTA 2: La tabla en servidor remoto y local son identicas (campos, estructura...)
NOTA3: Dependo totalmente de como esté la tabla del servidor remoto, es decir, no puedo modificarla, no puedo usar indices!!.
En conclusión, si se os ocurre alguna idea de como optimizar la consulta os lo agradezco, he probado ya algunas modificaciones pero nada lo mejora sustancialmente.
Saludos