La mejor manera de ajustar NO EXISTE en consultas SQL
Frecuentes
Visto 6,213 veces
1
Estoy tratando de ajustar los SQL que tienen la cláusula NOT EXISTS en las consultas. Mi base de datos es Netezza. Intenté reemplazar NOT EXISTS con NOT IN y observé los planes de consulta. Ambos se ven similares en tiempos de ejecución. ¿Puede alguien ayudarme con esto? Estoy tratando de ajustar algunas consultas SQL. Gracias de antemano.
SELECT ETL_PRCS_DT, COUNT (*) TOTAL_PRGM_HOLD_DUE_TO_STATION
FROM DEV_AM_EDS_1..AM_HOLD_TV_PROGRAM_INSTANCE D1
WHERE NOT EXISTS (
SELECT *
FROM DEV_AM_EDS_1..AM_STATION
WHERE D1.STN_ID = STN_ID
)
GROUP BY ETL_PRCS_DT;
2 Respuestas
1
Puedes probar un JOIN:
SELECT ETL_PRCS_DT, COUNT (*) TOTAL_PRGM_HOLD_DUE_TO_STATION
FROM DEV_AM_EDS_1..AM_HOLD_TV_PROGRAM_INSTANCE D1
LEFT JOIN DEV_AM_EDS_1..AM_STATION TAB2 ON D1.STN_ID = TAB2.STN_ID
WHERE TAB2.STN_ID IS NULL
Trate de comparar los planes de ejecución. El JOIN podría producir lo mismo que ya tiene.
contestado el 03 de mayo de 12 a las 15:05
1
Puede probar una combinación, pero a veces debe tener cuidado. Si la clave de combinación no es única en la segunda tabla, es posible que termine con varias filas. La siguiente consulta se encarga de esto:
SELECT ETL_PRCS_DT,
COUNT (*) TOTAL_PRGM_HOLD_DUE_TO_STATION
FROM DEV_AM_EDS_1..AM_HOLD_TV_PROGRAM_INSTANCE D1
left outer join
(
select distinct STN_ID
from DEV_AM_EDS_1..AM_STATION ams
) ams
on d1.STN_ID = ams.STN_ID
WHERE ams.STN_ID is NULL
Respondido 16 Feb 13, 17:02
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql performance netezza or haz tu propia pregunta.
Hay un
GROUP BY ETL_PRCS_DT
falta en la consulta, ¿no? - ypercubeᵀᴹ