有没有办法将2个不同查询的结果添加到结果集?
类似的东西:
ResultSet rs ;
i=0;
while(i<=l)
ResultSet rs1 = select * from tablei;
rs = rs + rs1;
i++;
}
我知道我可以用union来做,但是我有很多查询,如果我使用UNION,查询太慢了。
有什么想法吗?
答案 0 :(得分:1)
你在做UNION还是UNION ALL?后者应该与自己做的不同(尽管我希望自己做得慢一点)。
答案 1 :(得分:0)
我不相信有任何方法可以将ResultSet添加到另一个。它们没有在类中执行此类操作的方法或从代码更新ResultSet。 ResultSet旨在从数据库接收数据,而不是从开发人员操作,用户输入等接收数据。
我的建议是将数据提取到数组或类似的东西,并操纵代码中的数据或在查询中执行UNION。
答案 2 :(得分:0)
根据您使用的数据访问库,ResultSet有一个名为MoveNextRecordSet()的方法,而SqlDataReader提供了NextResult()。
创建一个存储过程以返回多个结果集(即一个sp中的几个SELECT语句),并使用这些方法浏览结果集。
答案 3 :(得分:0)
如果你发现一种方法在数据库中具有比UNION更好的性能,我会感到惊讶。 Union正在做你想要的,数据库服务器将尽可能地优化它。你基本上是在重新发明轮子。
如果您的UNION太慢,请尝试查看您的数据库是否可以更好地建立索引。与UNION选项相比,您还应该对各个查询进行一些时序分析。我希望一个或另一个查询是缓慢的,而不是UNION。
答案 4 :(得分:0)
如果Union需要花费太多时间来完成,您可以考虑更改您使用的表上的索引。
您检查了索引碎片吗?
如果您可以通过这种方式加快查询速度,请查看是否添加了正确的索引。我不认为像这样使用一段时间会比工会更快。