2017-06-11 8 views
2

ローが存在する場合のみ、テーブル内のローを更新する必要があります。PostgreSQL:UPDATEローが存在する場合

書き込み操作を減らすために、より良い照会
IF EXISTS (SELECT 1 FROM table1 WHERE id = 112233) THEN 
    UPDATE table1 SET ctime = now() WHERE id = 112233; 
END IF; 

UPDATE table1 SET ctime = now() WHERE id = 112233; 

それともselectと?

パフォーマンスを向上させるには、UPDATEの前にSELECTを実行して行が存在することを確認する必要がありますか?

答えて

4

このクエリ:

UPDATE table1 
    SET ctime = now() 
    WHERE id = 112233; 

正確に何をしたい行います。これは、0行以上のWHERE条件に一致するすべての行を更新します。

パフォーマンスが懸念される場合は、table1(id)にインデックスを作成してください。 idがプライマリキーの場合は、既にインデックスがあります。

+2

さらに、変更された行の数が返されますので、実際に更新が更新されたかどうかを確認することができます。 – pbuck

関連する問題