小编Mys*_*gue的帖子

有没有办法只对 WHERE 子句中的变量进行一次空检查?

我对一个看起来像这样的大表有一个查询:

declare @myIdParam int = 1

select * 
from myTable
where (@myIdParam is null or myTable.Id = @myIdParam)
Run Code Online (Sandbox Code Playgroud)

where子句中有几个类似这样的条件,也有很多连接,但这是一个总结。

实际上,如果@myIdParam 为空,我们不希望使用此参数限制结果。

我不是数据库专家,但从我的测试来看,似乎对每条记录都进行了 NULL 检查,并且没有以任何方式优化。

如果我删除空检查并假设参数不为空,则查询会立即返回。否则,最多需要十秒钟。

有没有办法优化它,以便在运行时只进行一次检查?

null sql-server

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

null ×1

sql-server ×1