Usually, when you must bring several data from a table in a linked server, you get better performance using OPENQUERY
instead of SELECT * FROM LinkedServer.DB.dbo.Table
. This is because the first option makes a single connection to the linked server, executes the query there, and brings the results; instead the second form makes a connection per row obtained.
I would try using a temporary table or directly OPENQUERY
:
SELECT Carpeta,
Estado
FROM dbo.SCANAPP_JOB_SIMCE
WHERE Nivel = '0M'
AND TipoPROC = 'CEN'
AND TipoQUEST = 'LTR'
AND Carpeta NOT IN
(
SELECT JobName
FROM OPENQUERY(VMEFLOW01,'SELECT DISTINCT JobName
FROM SIMCE_2018_2MCen_Salida.dbo.PC_Base2
WHERE JobName IS NOT NULL') x
)
;
Or with temporary table:
SELECT JobName
INTO #Temp1
FROM OPENQUERY(VMEFLOW01,'SELECT DISTINCT JobName
FROM SIMCE_2018_2MCen_Salida.dbo.PC_Base2
WHERE JobName IS NOT NULL') x
;
SELECT Carpeta,
Estado
FROM dbo.SCANAPP_JOB_SIMCE
WHERE Nivel = '0M'
AND TipoPROC = 'CEN'
AND TipoQUEST = 'LTR'
AND Carpeta NOT IN
(
SELECT JobName FROM #Temp1
)
;