2008-12-24 54 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需要花費太多時間才能完成,也許您應該考慮更改您使用的表上的索引。

你檢查了你的索引碎片嗎?

看看你是否添加了正確的索引,如果你可以加快查詢的方式。我不認爲這樣一段時間的使用會比工會更快。