T-SQL ISNULL()优化

Fro*_*kys 6 sql t-sql sql-server optimization

我有一个关于我继承的存储过程的连接的这个子句:

WHERE a.is_active = 1
AND b.due_date <= ISNULL(@due_date_limit, b.due_date)
Run Code Online (Sandbox Code Playgroud)

如何重新编写此文件以删除ISNULL,因为它会导致严重的性能问题?

Adr*_*der 7

在这个例子中,我会有一个if语句,检查@due_date_limit

IF (@due_date_limit IS NULL)
BEGIN
    ...
    WHERE   a.is_active = 1 --not required to compare b.due_date <= b.due_date
END
ELSE
BEGIN
    ...
    WHERE   a.is_active = 1
    AND     b.due_date <= @due_date_limit
END
Run Code Online (Sandbox Code Playgroud)