我对一个看起来像这样的大表有一个查询:
declare @myIdParam int = 1
select *
from myTable
where (@myIdParam is null or myTable.Id = @myIdParam)
Run Code Online (Sandbox Code Playgroud)
where子句中有几个类似这样的条件,也有很多连接,但这是一个总结。
实际上,如果@myIdParam 为空,我们不希望使用此参数限制结果。
我不是数据库专家,但从我的测试来看,似乎对每条记录都进行了 NULL 检查,并且没有以任何方式优化。
如果我删除空检查并假设参数不为空,则查询会立即返回。否则,最多需要十秒钟。
有没有办法优化它,以便在运行时只进行一次检查?