![]() |
1
2
是的,这是推荐的方式。这种类型的查询称为 Kitchen Sink Query , 而你的解决方案实际上是非常好的。
具有大量的单片查询的问题
您所做的动态解决方案实际上有很多
较好的
,因为它为每个过滤器组合生成一个新的计划。(注意“过滤器组合”
不
“值的组合”,这就是为什么您需要使用参数化它
考虑在任何客户端语言中使用ORM来构建这些动态过滤器,因为它们在这方面比T-SQL要好得多。
你对糟糕计划的担忧并非完全没有根据,但你需要监控你的服务器,看看会发生什么。在得到实际信息之前,不要急于做任何事情。如果你有适当的索引,主要是平等(而不是不平等或
如果你看到某个组合效果特别差,你想定制它,那么是的,这样做是有意义的。否则就不用麻烦了。没有必要对每种可能的组合都进行单独的程序。 通常,过滤索引或索引视图是比自定义查询更好的选择。
这将取决于计划的问题是什么,但通常应该避免暗示,以利于更好的索引和一般重构。 重构的一个例子是:数据类型与列不匹配。纠正这一点会有所改善
|
![]() |
joaocarlosib · 用于动态查询情况的存储过程常识模式 1 年前 |
![]() |
HALIM · Laravel 1查询多个不同的结果 1 年前 |
|
Scobbo · 从一个pandas数据帧.loc请求设置多个变量 1 年前 |
![]() |
Kalane · 数据集增加时SQL查询缓慢 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
user164863 · 我可以让这个mySQL查询更快吗? 7 年前 |