1

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

类似的东西:

ResultSet rs ;

i=0;

while(i<=l)


  ResultSet rs1 = select * from tablei;

  rs = rs + rs1; 

 i++;

}

我知道我可以用联合来做到这一点,但我有很多查询,如果我使用联合,查询太慢了。

任何的想法?

4

5 回答 5

1

你是在做 UNION 还是 UNION ALL?后者与自己做应该没有太大区别(尽管我希望自己做会慢一些)。

于 2008-12-24T09:49:47.023 回答
0

我不相信有任何方法可以将 ResultSet 添加到另一个。他们在类中没有执行此类操作或从代码更新 ResultSet 的方法。结果集旨在从数据库接收数据,而不是从开发人员操作、用户输入等接收数据。

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

于 2008-12-24T09:22:11.057 回答
0

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

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

于 2008-12-24T09:40:45.920 回答
0

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

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

于 2008-12-24T10:07:24.990 回答
0

如果该联合需要太多时间才能完成,那么您应该考虑更改您使用的表上的索引。

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

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

于 2008-12-24T11:59:11.460 回答