正常來說,一般是不會出現這種情況的,但也不能保證,偶爾有這種情況發生,解決方案如下:
##使用分頁查詢語句。 (建議學習:mysql學習)
因為分頁查詢每次只會查詢少量數據,所以不會佔用太多內存,而且資料量很大的時候,分頁查詢會節省一些時間的。
String sql = " SELECT uid,uname FROM t_user LIMIT ?,? " ; PreparedStatement ps = con.prepareStatement(sql) ; int pageSize = 10000; int pageId = 0; do { pst.setInt(1, pageId * pageSize); pst.setInt(2, pageSize); ResultSet rs = pst.executeQuery(); boolean isEmpty = true; while (rs.next()) { isEmpty = false; id = rs.getInt(1); name = rs.getString(2); } if (isEmpty) { break; } pageId++; } while (true); con.close(); } catch (SQLException e) { e.printStackTrace(); }
新增url參數配置
在jdbc的URL上加兩個參數就OK,成功解決記憶體溢出的問題。"jdbc:mysql://localhost:3306/db3?useCursorFetch=true&defaultFetchSize=100";
以上是sql查詢資料過多記憶體溢出怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!