2012-05-03 1 views
1

쿼리에 EXISTS 절이없는 SQL을 조정하려고합니다. 내 데이터베이스는 Netezza입니다. NOT EXISTS를 NOT IN으로 교체하고 쿼리 계획을 살펴 보았습니다. 모두 찾고 있습니다. 실행 시간과 비슷합니다. 누군가이 문제에 관해 나를 도와 줄 수 있습니까? 일부 SQL 쿼리를 조정하려고합니다. 미리 감사드립니다.SQL 쿼리에서 NOT EXISTS를 튜닝하는 가장 좋은 방법

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; 
+0

후 몇 가지 코드 또는 데이터 –

+1

쿼리에서 누락 ETL_PRCS_DT'하여'GROUP이있다되지 않은 : 다음 쿼리는이 돌봐? –

답변

1

당신은이 가입 시도 할 수 있습니다 :

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 

시도를 실행 계획을 비교. JOIN은 이미 가지고있는 것과 동일한 것을 만들어 낼 수 있습니다.

+0

쿼리를 추가했습니다 ... – Teja

+0

@Vutukuri 예제를 추가했습니다. – Kai

0

가입을 시도 할 수 있지만 조심해야 할 수도 있습니다. 조인 키가 두 번째 테이블에서 고유하지 않으면 여러 행으로 끝날 수 있습니다. 그것은

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