SQL大多数性能WHERE子句

时间:2016-10-17 06:56:45

标签: sql performance stored-procedures parameters where

在存储过程中,我有一个参数@ID,只有在它为NOT NULL时才需要应用。什么是最高效的编码方式?所有这三个都有效......

-> 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 个答案:

答案 0 :(得分:0)

我将使用Dynamic sql来优化此查询

DECLARE @sql VARCHAR(max)

SET @sql ='select * from yourtable ' + CASE WHEN @param IS NOT NULL THEN 'where table.COLUMN = '+@param ELSE '' END

EXEC (@sql) 

考虑到这些参数不是从应用程序发送的,并且不会有任何sql注入