2012-04-30 10 views
1

値が最新であることを確認するために、データベースにアクセスするプログラムを作成しています。たとえば(これは私の本当の問題ではない)、私は固有のプロパティを持つオブジェクトを持っています。私は、データベースに保存された同じ一意の値が確実に保持されるようにしたい。もしそうでなければ、私はデータベースを更新したい。これは、バックグラウンドで繰り返し実行されるスクリプトで、値の滞在を確実に同期させるために発生します。SQLコマンドのコスト:選択と更新

私の質問は、値を選択して比較し、次に更新する方がコスト効率が良いでしょうか。または私はちょうど自動的に更新する必要がありますか?

私は、SELECTとcompareがより効率的になり、すべての時間を更新するとは思っていますが、確かにわかりません。

私はどちらと一緒に行くべきですか?

ありがとうございます(これは間違った質問です)お詫び申し上げます。

+0

あなたのプログラムがDBのデータへの排他的アクセス権を持っているのか、複数のプログラムやインスタンスの間で共有されているのか疑問に思っていました。最初のアプリケーションであれば、アプリケーションのデータを同期し、そのオブジェクトへの更新はただちにDBに永続化する必要があります。データを共有する場合、データベースを盲目的に更新したくない場合や、互いのデータを破棄し続けることになります。その場合、更新時に増分されるバージョン列を追加し、値はそれがまだ更新の条件、ユーザーはデータを置き換えるかどうかを決定します。 – Quaternion

答えて

1

良い質問です。 SELECTクエリとUPDATEクエリの知識が必要です。

更新する必要があるレコードを指定するためにWHEREを使用してテーブルの既存のレコードを更新する必要がある場合は、UPDATEが使用されます。 UPDATEクエリを使用する方がよいでしょう。

コストと時間が有効な限り、異なるクエリアナライザを使用してクエリを分析できます。

2

UPDATE...WHEREコールでSELECTコールを行うことなく、これを行うことができます。これはこれを行う最速の方法です。

UPDATE <table> 
SET <data to update> 
WHERE <data is not up to date) 
関連する問題