有没有办法将2个不同查询的结果添加到结果集?combine 2 resultset
类似的东西:
ResultSet rs ;
i=0;
while(i<=l)
ResultSet rs1 = select * from tablei;
rs = rs + rs1;
i++;
}
我知道我可以与工会做,但我有很多疑问,如果我使用UNION查询太慢。
有什么想法?
有没有办法将2个不同查询的结果添加到结果集?combine 2 resultset
类似的东西:
ResultSet rs ;
i=0;
while(i<=l)
ResultSet rs1 = select * from tablei;
rs = rs + rs1;
i++;
}
我知道我可以与工会做,但我有很多疑问,如果我使用UNION查询太慢。
有什么想法?
你在做联盟还是联盟?后者与自己做这件事应该没有多大区别(尽管我希望自己做得更慢)。
我不相信有什么办法可以将ResultSet添加到另一个。他们没有类中的方法来完成这样的事情,或者从代码更新ResultSet。 ResultSets旨在接收来自数据库的数据,而不是来自开发人员操作,用户输入等。
我的建议是将数据提取到数组或类似的东西,并操作代码中的数据或在查询中执行UNION。
根据您使用的数据访问库,ResultSet有一个名为MoveNextRecordSet()的方法,并且SqlDataReader提供了NextResult()。
创建存储过程以返回多个结果集(即一个sp中包含多个SELECT语句),然后使用这些方法浏览结果集。
如果在数据库中找到比UNION更好的方法,我会感到惊讶。 Union正在做你想做的事情,数据库服务器将尽可能地优化它。你基本上正在重新发明轮子。
如果您的UNION速度太慢,那么尝试查看您的数据库是否可以使用更好的索引。与UNION选项相比,您还应该对单个查询进行时间分析。我期望其中一个或其他查询是缓慢的位,而不是UNION。
如果Union需要花费太多时间才能完成,也许您应该考虑更改您使用的表上的索引。
你检查了你的索引碎片吗?
看看你是否添加了正确的索引,如果你可以加快查询的方式。我不认为这样一段时间的使用会比工会更快。
您确定UNION查询比while循环中的多个数据库命中需要更多时间吗? – Preets 2008-12-24 09:03:05
同意。如果速度太慢,则必须是部分或全部单个查询。 UNION本身不应该很慢。 – DanSingerman 2008-12-24 10:16:37