2012-05-03 9 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' BY 'GROUPがありますが、そうではありませんか? –

答えて

1

あなたは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 

は、実行計画を比較してみます。 JOINはあなたがすでに持っているのと同じものを作り出すかもしれません。

+0

クエリを追加しました... – Teja

+0

@Vutukuri例を追加しました – Kai

0

あなたは参加を試みることができますが、時々注意する必要があります。結合キーが2番目のテーブルで一意でない場合は、複数の行で終了する可能性があります。次のクエリは、このの世話をする:

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 
関連する問題