是否有獲取大量數據到結果在java中設置的任何性能問題。抓取大量數據到結果集
rs = st.executeQuery("SELECT * from ABC")
表ABC由具有數據的散裝量(例如1萬美元)
會有什麼性能的改善,同時一次讀取數據迭代的1000行作爲小的塊並在其上操作的方式操作。
是否有獲取大量數據到結果在java中設置的任何性能問題。抓取大量數據到結果集
rs = st.executeQuery("SELECT * from ABC")
表ABC由具有數據的散裝量(例如1萬美元)
會有什麼性能的改善,同時一次讀取數據迭代的1000行作爲小的塊並在其上操作的方式操作。
請與數據的限制只能使用所選的列在MySQL一樣:
rs = st.executeQuery("SELECT columnname1,columnname2,.. from ABC
LIMIT 10000, 30 ")
但這個查詢是數據庫特定的。不是嗎? – Kuruvi
是的,因爲每個數據庫有不同的syntex,它只是一個examaple – jainvikram444
在一定程度上,這取決於您要連接到數據庫的類型和所使用的驅動程序。對於大型數據集,您應該使用:
Statement st = con.createStatement(ResultSet.TYPE_FORWARD_ONLY);
st.setFetchSize(<n>);
其中n是要提取的行數。
這將告訴司機不要過度拉一次過的所有數據。提取大小是一個提示,告訴驅動程序,如果它是空的,要獲取多少。
一般來說,最好讓JDBC驅動程序處理這個,而不是試圖實現它自己。
這Java Tutorial講述就像你會永遠想了解光標。
但我不能使用ResultSet.TYPE_FORWARD_ONLY。 becoz櫃面任何錯誤,我想從以前COMMITED點恢復(這個我寫previosly提交的值到一個文件中),所以我用下面的代碼 '聲明ST = DBConnection.getSrcConn()的createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,爲ResultSet.CONCUR_READ_ONLY);' – Kuruvi
這取決於數據庫和驅動程序。 –