none
sp_executesqlを使用せずWhere句を動的に作成したい RRS feed

  • 質問

  • はじめまして。

    SQLServer2005 SP2で動的クエリを作成しているのですが、
    sp_executesqlを使用せず、パフォーマンスにできるだけ影響を与えず、
    Where句を動的に作成する方法ありませんか?

    SELECT * FROM [hoge_hoge] hh WHERE hh.hogeID = ISNULL(@prmHoge,hh.hogeID)
    こんなのは思いついたのですが、@prmHoge=NULL時のパフォーマンスがよくなくて微妙なのです。

    [hoge_hoge]のデータ件数は20万件程度です。

    宜しくお願いします。
    2008年2月5日 4:53

回答

すべての返信

  • 参考程度ですが、ORを組み合わせた方が多少速いという結果がありますね。

     

    Optional parameters in T-SQL: COALESCE vs. ISNULL vs. IS NULL OR
    http://blogs.x2line.com/al/archive/2004/03/01/189.aspx

    2008年2月5日 9:38
  • こんにちは。中川俊輔 です。

     

    trapemiyaさん、大変参考になる回答ありがとうございます。

     

    nabebe111さん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    問題解決に有用な回答のようでしたので、

    勝手ながらtrapemiyaさんの回答へ回答済みチェックをつけさせていただきました。

    追加の質問等ありましたら是非投稿してください!

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    問題解決につながる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    nabebe111さんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

     

    2008年2月15日 8:25