次の3つのクエリを使用して、別のテーブルの3つの異なるカラムの値に基づいてステータスを更新しています。別のテーブルの異なるカラムから同じカラムを更新する
UPDATE NUMBER_TABLE SET STATUS='X' WHERE STATUS='P' AND NUMBER IN
(SELECT NVL(CONTACT_NO,'XXXXXXXXXX') FROM TMP_NUMBER_FOUND WHERE STATUS='P');
UPDATE NUMBER_TABLE SET STATUS='X' WHERE STATUS='P' AND NUMBER IN
(SELECT NVL(HOME_NO,'XXXXXXXXXX') FROM TMP_NUMBER_FOUND WHERE STATUS='P');
UPDATE NUMBER_TABLE SET STATUS='X' WHERE STATUS='P' AND NUMBER IN
(SELECT NVL(WORK_NO,'XXXXXXXXXX') FROM TMP_NUMBER_FOUND WHERE STATUS='P');
すべての3つのクエリがフルテーブルスキャンを実行しています。誰かが私はこのような
UPDATE number_table n INNER JOIN tmp_number_found t
ON n.number = NVL(t.contact_no, 'XXXXXXXXXX')
OR n.number = NVL(t.home_no, 'XXXXXXXXXX')
OR n.number = NVL(t.work_no, 'XXXXXXXXXX')
SET n.status='X'
WHERE n.status='P'
AND t.status='P'
;
は 'NUMBER'が' 'XXXXXXXXXX''あるNUMBER_TABLE' 'で実際に行がありますか? –