2016-10-17 15 views
-1

ストアドプロシージャでは、NULLでない場合にのみ適用する必要があるパラメータ@IDがあります。それをコード化する最も効果的な方法は何ですか?すべてのそれらの3作品...SQLパフォーマンスWHERE句

-> table.ID = ISNULL(@param, table.column) 
-> (ISNULL(@param ,0) = 0 OR table.column = @param) 
-> 1 = CASE WHEN ISNULL(@param ,0) = 0 THEN 1 
     WHEN table.column = @param THEN 1 
     ELSE 0 
     END 
+1

がある文句を言わない考慮すると、このクエリに

DECLARE @sql VARCHAR(max) SET @sql ='select * from yourtable ' + CASE WHEN @param IS NOT NULL THEN 'where table.COLUMN = '[email protected] ELSE '' END EXEC (@sql) 

を最適化するためにDynamic sqlで行きますDBMSを使用していますか?そしてそれらの ' - >'はどういう意味ですか? –

答えて

0

私は、これらのパラメータは、アプリケーションから送信されず、任意のSQLインジェクション

+0

動的SQLは、このような15個のパラメータと450行のselect文を持つため、オプションではありません... – DriesDG

+0

@DriesDG - 15個のパラメータでもクエリを動的にすることができます –