我正在尝试为搜索实现 sql 查询,并且我需要能够搜索许多字段,但它们都是可选的。我通过以下方式实现了查询:
SELECT --<some fields>
FROM --<some tables>
WHERE ((@param1 IS NULL) OR ([FirstName] = @param1))
AND((@param2 IS NULL) OR ([Surname] = @param2))
AND((@param3 IS NULL) OR ([CompanyName] = @param3))
但我发现现在我有大约 6 个参数,即使它们都为空,查询的执行时间也太长了。
我不喜欢执行动态 sql,只添加基于参数所需的 sql 条件。有什么方法可以优化此查询以确保它没有执行所有条件逻辑?
仅供参考,我不认为速度问题归结于索引,因为我查看了执行计划并且它正在运行索引扫描而不是表扫描或查找。