• ベストアンサー
  • 暇なときにでも

SQL SERVER の Where条件

  • 質問No.6321106
  • 閲覧数1364
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 100% (2/2)

初めて質問させて頂きます。

VB内でSQL文を作成し、それをSqlServerに送り実行させているのですが、

VB内でSQL文を作成する時に、Whereの条件を入れたり入れなかったりします。
その時、都度、WhereをつけるのかAndをつけるのか判断してプログラムを書くのが億劫なので

Dim SqlString as string

SqlString = "SELECT * FROM テーブルA WHERE 0 = 0"

IF txtA.text <> "" then
SqlString = SqlString & " AND 項目A = " & txtA.text
END IF
IF txtB.text <> "" then
SqlString = SqlString & " AND 項目B = " & txtB.text
END IF

こういうズボラをしてるのですが、これってSqlの実行スピードに影響したりしますか?
思うようにインデックス使ってくれなかったりしますか?

ご存知の方がご教授下さい。
よろしくお願いします。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 24% (755/3136)

いや、ごく普通のSQLのWHERE句の作成方法でしょう。
但し、テキストボックスの値を直接SQL文に展開するとSQLインジェクションと言う不正アクセスの原因になるので、そこは考え直した方がいいです。

SQLの実行速度はSQL文の書き方に依存するようでは、まともなDBエンジンとは言えないのですが、そう言うことがあるのは事実です。
お礼コメント
hiyoko-piyoyo

お礼率 100% (2/2)

回答ありがとう御座います。

皆さん、やっている事だと聞いて安心しました。

因みに、SQLインジェクションはテキストボックスをユーザーコントロールにして入力値を制御しているので大丈夫だと思います。
ご指摘ありがとう御座います。
投稿日時:2010/11/16 15:18

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 66% (115/174)

気になるのであれば、実際に確認してみましょう。
意味のない条件は、SQL解析エンジンが無視してくれる可能性は高いです。
実際に「実行のクエリプランを含める」をチェックして結果を確認して下さい。
※環境依存なので絶対に無視するとは言い切れません。

それで問題なければ、いいんじゃないですか?

性能試験を行って問題ないことを確認しているのであればOKだと思いますよ。
お礼コメント
hiyoko-piyoyo

お礼率 100% (2/2)

回答ありがとう御座います。
ごもっともなご指摘です。
投稿日時:2010/11/16 15:16
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ