2011-10-03 251 views
2

有一個數據庫,其中包含約200萬條記錄。我從我的java代碼中運行查詢,就像這樣「select * from table」。它會從結果集中的數據庫中提取完整的數據。或不 。如果是,那麼它將如何工作,我想學習在這個檢索工作,從數據庫中檢索一百萬條記錄

請讓我知道,我已經學會了一個地方,它會從數據庫中檢索完整的數據,並將從那裏存儲臨時存儲將顯示在輸出中。很好。 或者是否有與J2C相關的東西

+2

如果您只使用數據庫檢索大部分表格,那麼使用數據庫可能不是最佳選擇。當您只需要數據庫中的一小部分數據時,數據庫的效果最佳。否則,使用文件或更簡單的持久性存儲可能會更好。從數據庫獲取2百萬個條目將比從文件獲得多個時間。 –

回答

0

它會從結果數據庫中讀取完整的數據集

沒有一個準確的答案。它總是依賴於數據庫驅動程序。結果集是一個接口,其實現由特定的數據庫驅動程序完成。結果集實現可能有有自己的優化,其中對於較小的一組數據,在大型數據集,其緩存(或某種默認分頁機制)的地方,所有內容都被提取。所以請參閱數據庫驅動程序文檔。

有一個標準(至少javadoc這樣說)出路,以防止從數據庫中獲取大量數據。爲JDBC語句設置相應的讀取大小,如下所示java.sql.Statement.setFetchSize()

作爲Java文檔

爲JDBC驅動程序提供提示以行,應該是 從數據庫中取出,需要更多行時的數目。指定的行數 隻影響使用此語句創建的結果集。 如果指定的值爲零,則提示將被忽略。默認值 值爲零。

希望這會有所幫助。

+0

如果我不會設置一次從數據庫中檢索多少行的大小,那麼它會返回300萬條記錄。 – gaurav

+0

它不會。結果集採用由數據庫作爲查詢結果準備的表格的形式。你得到的是光標到這張表。大多數數據庫/驅動程序適用於較大數據集,這通常是這種情況。 – Santosh

相關問題