2010-10-04 70 views
1

我在oracle数据库上有一个“select * from tables..joins ...”查询,这将返回大约2200万行。我使用C#和ODP.NET,如下所示: oracleDataReader odr = command.ExecuteReader(); 但是在执行这个声明的过程中,需要大约1,5 Gb的RAM,这并不是很好。 关于如何保存一些内存的任何ideea? 谢谢!db阅读器的内存问题

+0

你真的要选择多行?如果是这样,你能不能在多个较小的选择中分割选择? – 2010-10-04 12:26:38

+0

是的,你可能会尝试做分页查询,而不是 – Larry 2010-10-04 12:30:12

+0

你的意思是1.5GB的数据库,或C#运行的地方?当你拿到它们时,你在做什么? – 2010-10-04 13:11:28

回答

1

首先,所有尝试在查询中添加一些where子句,如果它可能最大限度地减少结果的数量。你确定你一次需要全部2200万个结果吗?

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

0

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