2014-12-06 103 views
-1

我有一個Java ResultSet其中包含大量數據(但仍可能存儲在RAM中),從數據庫中檢索。我將使用這些數據。從性能角度來看,我應該將結果集內容複製到某個數據結構中,以便儘快關閉結果集並處理來自新容器的數據,或者最好不要浪費時間複製內容並直接從結果集中處理數據?什麼時候關閉ResultSet

+1

從性能的角度來看,您必須至少閱讀一次結果。如果您需要多次遍歷它,則複製可能會更快。 – 2014-12-06 16:11:06

回答

1

ResultSet一次獲取指定數量的行,具體取決於正在使用的JDBC驅動程序和數據庫。因此,如果您的查詢返回了一百萬行,並非所有百萬行都駐留在內存中,除非您遍歷ResultSet並將它們放在內存中。要直接回答您的問題,當您完成讀取所需的行時,通常在ResultSet.next()返回false時關閉ResultSet。

JDBC Developers Guide

+0

謝謝,因爲檢索的數據很大,但仍可能完全存儲在RAM中。 – 2014-12-06 16:21:39

+0

它不一定必須存儲在內存中,除非你的用例需要它。 – Nick 2014-12-06 16:26:16