- 締切済み
WHEREなどの条件が多い場合、どうすべきか?
複数のテーブルをleft joinで繋いで、カラムをエクセルのようなシートとしてWebで表示しています。 各カラムは、VERCHAR、DECIMAL、INT(SMALLINT~MIDIUMINT)の型を持っています。 エクセルのシートのような感じなので、エクセルのオートフィルタのような機能を付けたいと考えています。 各カラムをAND条件で指定できるやつです。 ですが、そもそもカラムの数が30ほどあります。 このような場合でもANDやBETWEENを使ってひたすらWHERE条件やCASEなどで抽出するようにするのでしょうか? DECIMALやINTの場合は条件を○○(最低値)~○○(最高値)のようにします。 VARCHARの場合は、選べる文字列が複数(数十程度)あり、そこから選べるようにします。 例えば、東京駅。渋谷駅、新宿駅、品川駅、横浜駅・・・などがあって、フィルターしたい文字列だけ選びます。 たぶんINを使った感じになります。 聞きたいのは、WHERE ○○ AND ○○ AND ○○ AND ・・・のようにひたすら条件を作っていくしかないのでしょうか? どうぞよろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
お礼
ありがとうございます! >そうすべきです。 >WHERE句が最も速く抽出条件を絞ります。 >HAVINGやJOINでも絞れますが、処理した結果に >ついて条件をかけるので、遅くなります。 そうなのですね・・・!ひたすらWHEREって効率が悪いのかと勘違いしていました。 >尚、サブクエリが使えるDBなら、 >サブクエリを入れ子にすると、ANDで条件を結合 >するより効率があがります。 これは知りませんでした。 >尚、抽出したレコードを更新する場合、JOINしているクエリが 対象だと制約があります。・・・ ありがとうございます。ここはどうやるのか不明だったのでたいへん参考になりました。