日期:2014-05-16  浏览次数:20422 次

数据量优化问题

由于最近要处理数据量比较大的问题,在网上找点资料

?

?数据库:oracle
我现在这样执行 rs=handle.executeQuery(strSql)一条语句
这一语句strSql是一个简单的查询语句,但会返回几百万条记录(500w以上)。
问题:
1.如果只是执行这条sql而不用while(rs.next())来取数据的话,是否会需要执行很多的时间,
是用while(rs.next())来遍历所有的记录需要更多的时间,还是执行那条sql(也就是handle.executeQuery(strSql);)花更多的时间?
2.如果我只执行executeQuery(strSql);而不遍历它的结果集会不会耗web服务器上的内存?
3.这个问题其实和问题2差不多,如果我用while(rs.next())来遍历这个结果集,但我不把整个结果集保存在中间变量中(一般是数组中),而是取一条记录,保存一条记录到文件中,这种情况会不会很耗web服务器的内存?

?

回答:
1?executeQuery(strSql);主要是消耗DB服务器上的内存
2?while(rs.next)是消耗WEB服务器上的内存
对于500W条数据,不论DB服务器还是WEB服务器,都会消耗很多内存.
3、“取一条记录,保存一条记录到文件中”:这样做会在一定程度上会节约很多内存(在500W条数据时会很明显),但是在取操作上可能会麻烦点,增加了复杂度,在实际运用中要看项目的具体取舍