2016-06-01 8 views
0

私の使命を実行する2つの方法の間に苦労しています。SQL照会の効率チェック

私は条件のセットを持っており、それらがすべて真であるとき - そのレコードの "x"カラム属性に "true"を設定する必要があります。

さらに効率的なものは&が推奨されます。なぜですか?

  1. テーブル内のすべてのレコードの「偽」に設定されたこのコラムをし、その後 は、いくつかの条件の下で、「true」に設定するには、別のクエリを実行します。
  2. すべての条件が「true」の場合は「true」に設定し、1つ以上の条件が満たされないすべてのレコードに対して「false」を設定するために別のクエリを実行します。

「x」列のデフォルト値が変更される必要があるとは仮定できません。なぜなら、クエリは、その列に最初の値を挿入した後に、このクエリを最後に実行したときから変更される条件もあります。

もう一つのアイデアがありますが、上記2の方が効率的でしょうか?

また、効率的な計算の仕方と同様に、クエリの効率的な計算方法を理解したいと思います。

+2

作業するRDBMSと、列の値を決定するための条件を指定してください。また、関連するテーブルといくつかのサンプルデータのDDLが良いでしょう。 –

+0

DBMSがブール型データ型をサポートしている場合、 'the_table set the_column = condition'を更新してください –

答えて

1

おそらく、最も効率的な方法は、条件文を行ごとに1回だけ評価する必要があり、すべての行を1回だけ変更する必要があるため、case文を使用することです。

UPDATE tablename SET fieldname = (CASE WHEN conditions THEN 'true' ELSE 'false' END) 

ケースステートメントは、少なくともOracleとMS-SQLで利用できます。他のDBベンダーについては知らない

0

すべての条件がデータ構造内で似ている場合、私は本当に重要ではないと思います。

条件に異なるデータクエリ構造がある場合(たとえば、「myキーはtableBの外部キーではない」、「State = 'California'」など)、trueに設定してから1つずつチェックしますSQLステートメントのシーケンス)が優れています。シンプルなものを最初にチェックして、すでにフラグが削除されているレコードについて複雑なものを気にする必要がないからです。