结合2个结果集

时间:2008-12-24 08:36:29

标签: jdbc resultset

有没有办法将2个不同查询的结果添加到结果集?

类似的东西:

ResultSet rs ;

i=0;

while(i<=l)


  ResultSet rs1 = select * from tablei;

  rs = rs + rs1; 

 i++;

}

我知道我可以用union来做,但是我有很多查询,如果我使用UNION,查询太慢了。

有什么想法吗?

5 个答案:

答案 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需要花费太多时间来完成,您可以考虑更改您使用的表上的索引。

您检查了索引碎片吗?

如果您可以通过这种方式加快查询速度,请查看是否添加了正确的索引。我不认为像这样使用一段时间会比工会更快。