我需要为搜索页面编写一个存储过程。搜索页面允许用户为某些过滤器选择“任何”,每个过滤器映射到我的数据库中的一列。SQL服务器中的条件过滤
什么是我的存储过程接近这一目标的最佳方式:
(1)我应该去使用动态SQL(sp_executesql的),并构建基于过滤器选择的查询?这会对缓存执行计划产生任何负面影响吗?
(2)我应该将“Any”翻译为所有可能的值并在静态查询中使用它们吗? (3)我应该使用强制过滤器将结果存储在临时表中,然后在这些结果上逐一应用可选过滤器(支持ANY选项)?
(4)我没有想过的其他方法?
不是一个完整的答案,所以我会发表评论,但做**不做** 2' - 查询引擎仍然会检查该字段,当它不需要(即如果您指定一个列表对于IN列表中所有值的表,它仍然会检查每一行) – JNK
关于此主题的必读内容; http://www.sommarskog.se/dyn-search.html –