UPDATE 表示するクエリは次とまったく同じです:
UPDATE fromemailaddress f
SET call = true
FROM (
SELECT fromemailaddress
FROM email
WHERE subject ILIKE '%tester%'
) e
WHERE e.fromemailaddress = f.fromemailaddress;
subject ILIKE '%tester%' subject ~ 'tester'と同等の高速です 。 LIKEの詳細 、ILIKE および正規表現マッチング(~ )マニュアル
またはdba.SEのこの関連する回答:
そして効果的に と同じ:
UPDATE fromemailaddress f
SET call = true
WHERE EXISTS (
SELECT 1
FROM email e
WHERE e.fromemailaddress = f.fromemailaddress
AND e.subject ILIKE '%tester%'
);
代わりにこれを使用してください。
テーブルemailに複数の行がある場合 同じfromemailaddress fromemailaddressの行と一致する 、このフォームは1つのみ実行されます 不幸なオリジナルとは異なり、行ごとに更新します。
fromemailaddressという事実に惑わされないでください ここでは列およびテーブル名として使用されます。
マニュアルを注意深くお読みください