我有一张非常大的表,每天都会有几百万条记录,每天结束时我都会提取前一天的所有记录。我是这样做的:
String SQL = "select col1, col2, coln from mytable where timecol = yesterday";
Statement.executeQuery(SQL);
问题在于这个程序需要使用2GB内存,因为它将所有结果都加载到内存中进行处理。
我尝试设置了Statement.setFetchSize(10)
,但它从操作系统中占用的内存量完全相同,没有任何区别。我正在使用Microsoft SQL Server 2005 JDBC Driver。
是否有办法像Oracle数据库驱动程序一样,在执行查询时分批读取结果,仅显示少量行,并随着向下滚动显示更多结果?