我试图实现对搜索的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 PARAMS,即使他们都为空,则查询时间太长了执行。
我宁愿不被执行动态SQL和只添加其基于所述参数所需的SQL的条件。有没有什么办法可以优化这个查询来确保它不执行所有的条件逻辑?
正如一个供参考的,我不认为速度问题下降到索引,因为我有看执行计划,并正在运行索引扫描而不是表扫描或查找。
顺便说一句,如果你不执行where子句的查询没有考虑显著更少的时间? –
@ Ali.NET是的,它回来不到一秒没有where子句。 – Penfold