Oracle SQL DELETE文のレスポンス
いつもお世話になっております。
この度は、手前のSQL文において
DELETE文のレスポンスが上がらずに難儀しています。
現在DELETE処理はバッチにて行っています。
最初にSELECTにて抽出を行ったものをバックアップにとり、
次は同様の条件でDELETE文で処理しています。
この際に、SELECTでは1秒程度で済んだ処理が、
DELETE文ではレスポンスが返ってこないという状況です。
何がまずいのか、どう工夫すればいいのか
色々変えてみましたがレスポンスは改善されません。
SQLと条件は以下です。
【SQL文】
SELECT 複数の項目
FROM TABLEA A
WHERE NOT Exists(SELECT 'X' FROM TABLEB B WHERE A.ITEMNO = B.ITEMNO)
AND NOT Exists(SELECT 'X' FROM TABLEC C WHERE A.ITEMNO = C.ITEMNO
AND to_char(LAST_DAY(ADD_MONTHS(SYSDATE,-4)),'YYYYMMDD') < C.REPYMD)
AND NOT Exists (SELECT 'X' FROM TABLEA2 A2 WHERE A.ITEMNO = A2.ITEMNO
AND to_char(LAST_DAY(ADD_MONTHS(SYSDATE,-4)),'YYYYMMDD') < to_char(A2.CREATEDATE,'YYYYMMDD'))
AND NOT Exists(SELECT 'X' FROM TABLEC C WHERE A.ITEMNO != C.ITEMNO
AND to_char(LAST_DAY(ADD_MONTHS(SYSDATE,-4)),'YYYYMMDD') < to_char(A.CREATEDATE,'YYYYMMDD'))
上記のSELECT文の後に処理されるDELETE文は
「SELECT 複数の項目 FROM TABLEA A」 ⇒ DELETE FROM TABLEA A としたもので、
条件は全てSELECT文と同様のものを使用しています。
◆条件を言葉で明記すると以下のようになります。
1.Bテーブルに存在するものは削除対象外とする
2.AテーブルのアイテムIDとCテーブルのアイテムIDは一致する。
AテーブルのCREATEDATEとCテーブルのREPYMDのいずれかが3ヶ月以内のアイテムは
削除対象外とする
3.AテーブルもしくはCテーブルにしか存在しない場合は、各日付が3ヶ月以内のアイテムは
削除対象外とする
以上のようになっています。
どなたかアドバイスをいただければ幸いです。
宜しくお願い致します。
お礼
アドバイスありがとうございます。 すみません。恥ずかしながら基本は一応勉強しました。 MySQL5.1をサーバーとして使用しています。 検索で調べているのですが、なかなか出てきません。 Eclipse3.4とTomcat5.5を使用していていて一つの文で済ませたいのです。 自分には、検索でなかなかこういった問題を探し出すことが出来ず 見つからないのと難しい事は分からないと思い質問させてもらっていました。 しっかり勉強したいと思います。 ありがとうございました。