IF @Variable1 IS NOT NULL
BEGIN
SELECT
*
FROM
dbo.Table1
WHERE
Column1 = @Variable1
END
ELSE IF @Variable1 IS NULL AND @Variable2 IS NOT NULL
BEGIN
SELECT
*
FROM
dbo.Table1
WHERE
Column1 = Column1
AND
Column2 = @Variable2
END
在这个例子中,是将2个不同的变量分别处理放在两个存储过程中更好,还是像这样全部放在一个存储过程中?(我知道使用SELECT *
不是好的实践方式,我只是为了举例而已)
Column1 = COALESCE(@Variable1, Column1) AND Column2 = COALESCE(@Variable2, Column2)
开始,然后进一步进行优化(例如使用OPTION (RECOMPILE)
或动态SQL),如果你发现同样的参数被多个变量使用导致性能问题时。当处理变得更加复杂时,我开始称之为“万能方法”,并退回到与optimize for ad hoc workloads
结合使用的动态SQL。 - Aaron Bertrand