Buena jornada,
Un par de ideas vagas:
1. En la respuesta de
ADO components CommandTimeout recomiendan poner el valor de la propiedad
CursorLocation a
clUseServer.
2. Si la relación entre las dos tablas se da únicamente por el campo
E2_CTRL_PAC (aunque sospecho que no), y si entiendo bien lo que propone
[oscarac], sería algo así:
Código SQL
[-]SELECT DISTINCT E2_CTRL_PAC
FROM T4_CON_CITA
LEFT OUTER JOIN T6_ESPECIALES
ON T4_CON_CITA.E2_CTRL_PAC = T6_ESPECIALES.E2_CTRL_PAC
WHERE T4_CON_CITA.T4_FECHA_CITA > 40537
AND T4_CON_CITA.T4_FECHA_CITA < 40903
AND T4_CON_CITA.T4_ASISTIO = 1
AND T4_CON_CITA.T4_FALTO = 0
AND T4_CON_CITA.C21_DX_CIE > -1
AND NOT T4_CON_CITA.C22_DX_CIE IS NULL
AND T6_ESPECIALES.E2_CTRL_PAC IS NULL
UNION
SELECT DISTINCT E2_CTRL_PAC
FROM T6_ESPECIALES
LEFT OUTER JOIN T4_CON_CITA
ON T6_ESPECIALES.E2_CTRL_PAC = T4_CON_CITA.E2_CTRL_PAC
WHERE T6_ESPECIALES.T6_FECHA_CITA > 40537
AND T6_ESPECIALES.T6_FECHA_CITA < 40903
AND T6_ESPECIALES.T6_ASISTIO = 1
AND T6_ESPECIALES.T6_FALTO = 0
AND T6_ESPECIALES.C21_DX_CIE > -1
AND NOT T6_ESPECIALES.C22_DX_CIE IS NULL
AND T4_CON_CITA.E2_CTRL_PAC IS NULL
Pero, adicionalmente, le propongo el uso de
FULL OUTER JOIN. Algo así:
Código SQL
[-]SELECT DISTINCT E2_CTRL_PAC
FROM T4_CON_CITA
FULL OUTER JOIN T6_ESPECIALES
ON T4_CON_CITA.E2_CTRL_PAC = T6_ESPECIALES.E2_CTRL_PAC
WHERE T4_CON_CITA.T4_FECHA_CITA > 40537
AND T4_CON_CITA.T4_FECHA_CITA < 40903
AND T4_CON_CITA.T4_ASISTIO = 1
AND T4_CON_CITA.T4_FALTO = 0
AND T4_CON_CITA.C21_DX_CIE > -1
AND NOT T4_CON_CITA.C22_DX_CIE IS NULL
UNION
SELECT DISTINCT E2_CTRL_PAC
FROM T6_ESPECIALES
FULL OUTER JOIN T4_CON_CITA
ON T6_ESPECIALES.E2_CTRL_PAC = T4_CON_CITA.E2_CTRL_PAC
WHERE T6_ESPECIALES.T6_FECHA_CITA > 40537
AND T6_ESPECIALES.T6_FECHA_CITA < 40903
AND T6_ESPECIALES.T6_ASISTIO = 1
AND T6_ESPECIALES.T6_FALTO = 0
AND T6_ESPECIALES.C21_DX_CIE > -1
AND NOT T6_ESPECIALES.C22_DX_CIE IS NULL
Si está de acuerdo, puede comparar el desempeño que le dé la ejecución de cada propuesta.
-