小编use*_*353的帖子

编写检查列是否为非 NULL 值或 NULL 的 SQL 查询的最佳方法

我有一个参数为 NULL 作为默认值的 SP,然后我想做这样的查询:

SELECT ...
FROM ...
WHERE a.Blah = @Blah AND (a.VersionId = @VersionId OR (@VersionId IS NULL AND a.VersionId IS NULL));
Run Code Online (Sandbox Code Playgroud)

WHERE上述检查两个非空值和一个NULL值@VersionId

在性能方面,改为使用IF语句并将查询复制到一个搜索非 NULL 的查询和另一个搜索 NULL 的查询中会不会更好?:

IF @VersionId IS NULL BEGIN
    SELECT ...
    FROM ...
    WHERE a.Blah = @Blah AND a.VersionId IS NULL;
ELSE BEGIN
    SELECT ...
    FROM ...
    WHERE a.Blah = @Blah AND a.VersionId = @VersionId;
END
Run Code Online (Sandbox Code Playgroud)

或者查询优化器使它本质上是一样的?

更新:

(注意:我使用的是 SQL Server)

(据我所知,a.VersionId = @VersionId这两种情况都不能使用,是吗?)

performance sql-server-2008

18
推荐指数
1
解决办法
8765
查看次数

标签 统计

performance ×1

sql-server-2008 ×1