数据库读取器的内存问题

时间:2010-10-04 12:21:40

标签: c# oracle memory

我在oracle数据库上有一个“select * from tables..joins ...”查询,它将返回大约22百万行。我正在使用C#和ODP.NET,如下所示: oracleDataReader odr = command.ExecuteReader(); 但在执行此语句时,该过程需要大约1.5 Gb RAM,这不是很好。 关于如何节省一些记忆的任何想法? 谢谢!

2 个答案:

答案 0 :(得分:1)

首先尝试在查询中添加一些where子句,以便最大限度地减少结果的数量。您确定一次需要所有22milions结果吗?

然后你可以将select * from ....改为select columnA,columnB from ...也会节省一些内存,因为select * ...返回所有列的数据,你在该查询中使用的所有表。这可能不够有效。问候:)

答案 1 :(得分:0)

Oracle必须支持这样的表达式: SELECT * from Table WHERE ROWNUM< = 10