java访问数据库返回大数据量的性能问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 03:16:06
请教高手,关于查询机制的问题
数据库: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、2的问题:
> executeQuery(strSql);主要是消耗DB服务器上的内存
> while(rs.next)是消耗WEB服务器上的内存
对于500W条数据,不论DB服务器还是WEB服务器,都会消耗很多内存.
3、“取一条记录,保存一条记录到文件中”:这样做会在一定程度上会节约很多内存(在500W条数据时会很明显),但是在取操作上可能会麻烦点,增加了复杂度,在实际运用中要看项目的具体取舍。

我不知道,但是我认为用while(rs.next())来取数据比较适合读大量的数据