2014-02-12 53 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