是否有获取大量数据到结果在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
这取决于数据库和驱动程序。 –