2014-02-12 51 views
-1

是否有獲取大量數據到結果在java中設置的任何性能問題。抓取大量數據到結果集

rs = st.executeQuery("SELECT * from ABC") 

表ABC由具有數據的散裝量(例如1萬美元)

會有什麼性能的改善,同時一次讀取數據迭代的1000行作爲小的塊並在其上操作的方式操作。

+0

這取決於數據庫和驅動程序。 –

回答

0

請與數據的限制只能使用所選的列在MySQL一樣:

rs = st.executeQuery("SELECT columnname1,columnname2,.. from ABC 
        LIMIT 10000, 30 ") 
+0

但這個查詢是數據庫特定的。不是嗎? – Kuruvi

+0

是的,因爲每個數據庫有不同的syntex,它只是一個examaple – jainvikram444

0

在一定程度上,這取決於您要連接到數據庫的類型和所使用的驅動程序。對於大型數據集,您應該使用:

Statement st = con.createStatement(ResultSet.TYPE_FORWARD_ONLY); 
st.setFetchSize(<n>); 

其中n是要提取的行數。

這將告訴司機不要過度拉一次過的所有數據。提取大小是一個提示,告訴驅動程序,如果它是空的,要獲取多少。

一般來說,最好讓JDBC驅動程序處理這個,而不是試圖實現它自己。

Java Tutorial講述就像你會永遠想了解光標。

+0

但我不能使用ResultSet.TYPE_FORWARD_ONLY。 becoz櫃面任何錯誤,我想從以前COMMITED點恢復(這個我寫previosly提交的值到一個文件中),所以我用下面的代碼 '聲明ST = DBConnection.getSrcConn()的createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,爲ResultSet.CONCUR_READ_ONLY);' – Kuruvi