有沒有辦法將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