こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQL SERVER の Where条件

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

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の実行スピードに影響したりしますか?
思うようにインデックス使ってくれなかったりしますか?

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

投稿日時 - 2010-11-15 14:51:18

QNo.6321106

暇なときに回答ください

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

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

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

投稿日時 - 2010-11-15 15:21:54

お礼

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

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

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

投稿日時 - 2010-11-16 15:18:58

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

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

性能試験を行って問題ないことを確認しているのであればOKだと思いますよ。

投稿日時 - 2010-11-16 12:39:30

お礼

回答ありがとう御座います。
ごもっともなご指摘です。

投稿日時 - 2010-11-16 15:16:30

あなたにオススメの質問