我使用mysql與jdbc。我需要遍歷表中的每一行(60,000行,table = InnoDB),並對每個行進行一些處理。選擇表中的每一行而不使用限制?
請問mysql會接受一個沒有限制的查詢嗎?在最簡單的實現,我只是選擇整個表格,並保持迭代的結果,而光標給了我更多的結果:
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM foo");
ResultSet rs = stmt.getResultSet();
while (rs.next()) {
.. do stuff on each row ..
}
我可以實現課程的分頁查詢做到這一點分批,但它會如第一種方法所述那樣簡單。我想知道mysql是否在內部執行此操作,或者它試圖首先將整個查詢結果集加載到內存中?
感謝
它將所有內容加載起來,如果感覺像它一樣會炸掉內存 – Drew 2013-05-13 03:41:48
_「請問mysql會接受一個沒有這種限制的查詢嗎?」_爲什麼不呢?你爲什麼不嘗試一下,看看? – 2013-05-13 03:42:55
@DrewPierce將fetchsize設置爲'Integer.MIN_VALUE'不會讓你的內存受到MySQL JDBC的影響。 – 2013-05-13 10:51:13