在存储过程中,我有一个参数@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
答案 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注入