I have this union query, it takes about 5 minutes to run, but if I separate each select, each one takes seconds, what am I doing wrong?
SELECT "sin asignar" AS type, [chrbanco], [chrmoneda], [dtmfechamovimiento], [fltimporte], val([chrnumerooperacion]) AS operacion, [chrtransaccion], 1
FROM bcp_all
WHERE (((bcp_all.chrBanco) In (SELECT [chrBanco] FROM [bcp_all] As Tmp GROUP BY [chrBanco],[chrMoneda],[dtmFechaMovimiento],[fltImporte] HAVING Count(*)>0 And [chrMoneda] = [bcp_all].[chrMoneda] And [dtmFechaMovimiento] = [bcp_all].[dtmFechaMovimiento] And [fltImporte] = -[bcp_all].[fltImporte])))
union all
SELECT "asignado" AS type, mid(pps.key,1,3) AS chrbanco, mid(pps.key,12,3) AS chrmoneda, datevalue(mid(pps.key,10,2) & "/" & mid(pps.key,8,2) & "/" & mid(pps.key,4,4)) AS dtmfechamovimiento, val(mid(pps.key,15,instr(pps.key,"-")-15)) AS fltimporte, val(mid(pps.key,instr(pps.key,"-")+1,len(pps.key)-instr(pps.key,"-"))) AS operacion, "C:" & cliente & "; F:" & trim(facturas) & "; O:" & trim(ordenes) & "; OBS:" & trim(observacion) AS chrtransaccion, [c]
FROM (([C:\Documents and Settings\pelbu0\Desktop\@PRODUCCION\DB_pps.mdb;pwd=kOM6UF1XTi8E].pps LEFT JOIN bcp_all ON pps.key=[bcp_all].[key]) LEFT JOIN sco_all ON pps.key=[sco_all].[key]) LEFT JOIN [C:\Documents and Settings\pelbu0\Desktop\@PRODUCCION\DB_pps.mdb;pwd=kOM6UF1XTi8E].observaciones ON pps.key=observaciones.key
WHERE IsNull([bcp_all].[key] & [sco_all].[key]) And Not Nz([c],False)
UNION ALL
SELECT "sin asignar" AS type, [chrbanco], [chrmoneda], [dtmfechamovimiento], [fltimporte], val([chrnumerooperacion]) AS operacion, [chrtransaccion], 1
FROM SCO_ALL
WHERE (((SCO_ALL.chrBanco) In (SELECT [chrBanco] FROM [SCO_ALL] As Tmp GROUP BY [chrBanco],[chrMoneda],[dtmFechaMovimiento],[fltImporte] HAVING Count(*)>0 And [chrMoneda] = [SCO_ALL].[chrMoneda] And [dtmFechaMovimiento] = [SCO_ALL].[dtmFechaMovimiento] And [fltImporte] = -[SCO_ALL].[fltImporte])))
ORDER BY [chrbanco], [chrmoneda], [dtmfechamovimiento], [fltimporte];
SELECT "sin asignar" AS type, [chrbanco], [chrmoneda], [dtmfechamovimiento], [fltimporte], val([chrnumerooperacion]) AS operacion, [chrtransaccion], 1
FROM bcp_all
WHERE (((bcp_all.chrBanco) In (SELECT [chrBanco] FROM [bcp_all] As Tmp GROUP BY [chrBanco],[chrMoneda],[dtmFechaMovimiento],[fltImporte] HAVING Count(*)>0 And [chrMoneda] = [bcp_all].[chrMoneda] And [dtmFechaMovimiento] = [bcp_all].[dtmFechaMovimiento] And [fltImporte] = -[bcp_all].[fltImporte])))
union all
SELECT "asignado" AS type, mid(pps.key,1,3) AS chrbanco, mid(pps.key,12,3) AS chrmoneda, datevalue(mid(pps.key,10,2) & "/" & mid(pps.key,8,2) & "/" & mid(pps.key,4,4)) AS dtmfechamovimiento, val(mid(pps.key,15,instr(pps.key,"-")-15)) AS fltimporte, val(mid(pps.key,instr(pps.key,"-")+1,len(pps.key)-instr(pps.key,"-"))) AS operacion, "C:" & cliente & "; F:" & trim(facturas) & "; O:" & trim(ordenes) & "; OBS:" & trim(observacion) AS chrtransaccion, [c]
FROM (([C:\Documents and Settings\pelbu0\Desktop\@PRODUCCION\DB_pps.mdb;pwd=kOM6UF1XTi8E].pps LEFT JOIN bcp_all ON pps.key=[bcp_all].[key]) LEFT JOIN sco_all ON pps.key=[sco_all].[key]) LEFT JOIN [C:\Documents and Settings\pelbu0\Desktop\@PRODUCCION\DB_pps.mdb;pwd=kOM6UF1XTi8E].observaciones ON pps.key=observaciones.key
WHERE IsNull([bcp_all].[key] & [sco_all].[key]) And Not Nz([c],False)
UNION ALL
SELECT "sin asignar" AS type, [chrbanco], [chrmoneda], [dtmfechamovimiento], [fltimporte], val([chrnumerooperacion]) AS operacion, [chrtransaccion], 1
FROM SCO_ALL
WHERE (((SCO_ALL.chrBanco) In (SELECT [chrBanco] FROM [SCO_ALL] As Tmp GROUP BY [chrBanco],[chrMoneda],[dtmFechaMovimiento],[fltImporte] HAVING Count(*)>0 And [chrMoneda] = [SCO_ALL].[chrMoneda] And [dtmFechaMovimiento] = [SCO_ALL].[dtmFechaMovimiento] And [fltImporte] = -[SCO_ALL].[fltImporte])))
ORDER BY [chrbanco], [chrmoneda], [dtmfechamovimiento], [fltimporte];