将未知数量的结果集合并到单个可排序的分页结果集中的最佳策略是什么?
后台,我有一个相当复杂的查询,用户可以构建N次,然后一次提交所有这些查询。 N个查询都返回相同的格式化结果集,但具有完全不同的WHERE子句。
我可以使用SPROC根据输入生成动态sql语句,或者单独执行每个查询并在代码中处理它,但必须有更好的方法来完成它。这个问题有最佳解决方案吗?
答案 0 :(得分:0)
只要查询都返回相同的格式化结果,您就可以将它们组合在一起并使用order by对结果进行排序
select col1, col2, col3 from tablea where ...
union
select col1, col2, col3 from tablea where ...
order by col1, col2
如果您关心哪个查询返回了结果,则需要添加一个指示查询的额外列。
根据生成的N个查询的大小,总联合查询的大小也可能存在问题。当尝试以这种方式组合多个查询时,我遇到了JDBC限制查询大小的问题,最后做了单独的数据库调用并将结果合并到java代码中。