いくつかの異なるオプションがあり、(いつものように) 両方のパフォーマンス テストをお勧めします。
- 動的 SQL。
使用されるパラメーターに基づいて SQL を動的に構築します。
declare sqlTxt VARCHAR(max)
delcare params VARCHAR(128)
params = 'Age INT, Name VARCHAR(128), FamilyName VARCHAR(128)'
sqlText = 'SELECT field Name From Table WHERE 1=1'
IF (IS NOT NULL) sqlText += 'AND Age == @Age '
IF (IS NOT NULL) sqlText += 'AND Name LIKE %@Name%'
IF (IS NOT NULL) sqlText += 'AND FamilyName LIKE %FamilyName%'
EXEC sp_executesql @sqlText, @params, @Age = @Age, @Name = @Name, @FamilyName = @FamilyName
- SQL でのハンドル
Eli Gassert によって投稿されたソリューションを使用してください。
通常、小規模なクエリではオプション 2 を使用しても問題ありませんが、検索を拡張して多くの異なるパラメーターを含める場合は、速度が低下する可能性がある「パラメーター スニッフィング」に注意してください。
パフォーマンスが問題になる場合は、基本的に両方の方法をテストします。