2008-12-24 57 views
1

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

类似的东西:

ResultSet rs ; 

i=0; 

while(i<=l) 


    ResultSet rs1 = select * from tablei; 

    rs = rs + rs1; 

i++; 

} 

我知道我可以与工会做,但我有很多疑问,如果我使用UNION查询太慢。

有什么想法?

+0

您确定UNION查询比while循环中的多个数据库命中需要更多时间吗? – Preets 2008-12-24 09:03:05

+0

同意。如果速度太慢,则必须是部分或全部单个查询。 UNION本身不应该很慢。 – DanSingerman 2008-12-24 10:16:37

回答

1

你在做联盟还是联盟?后者与自己做这件事应该没有多大区别(尽管我希望自己做得更慢)。

0

我不相信有什么办法可以将ResultSet添加到另一个。他们没有类中的方法来完成这样的事情,或者从代码更新ResultSet。 ResultSets旨在接收来自数据库的数据,而不是来自开发人员操作,用户输入等。

我的建议是将数据提取到数组或类似的东西,并操作代码中的数据或在查询中执行UNION。

0

根据您使用的数据访问库,ResultSet有一个名为MoveNextRecordSet()的方法,并且SqlDataReader提供了NextResult()。

创建存储过程以返回多个结果集(即一个sp中包含多个SELECT语句),然后使用这些方法浏览结果集。

0

如果在数据库中找到比UNION更好的方法,我会感到惊讶。 Union正在做你想做的事情,数据库服务器将尽可能地优化它。你基本上正在重新发明轮子。

如果您的UNION速度太慢,那么尝试查看您的数据库是否可以使用更好的索引。与UNION选项相比,您还应该对单个查询进行时间分析。我期望其中一个或其他查询是缓慢的位,而不是UNION。

0

如果Union需要花费太多时间才能完成,也许您应该考虑更改您使用的表上的索引。

你检查了你的索引碎片吗?

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