C# 减少数据库读取器内存使用

C# 减少数据库读取器内存使用,c#,oracle,memory,C#,Oracle,Memory,我有一个select*from tables..JOIN。。。对oracle数据库的查询,将返回大约2200万行。我正在使用C和ODP.NET,如下所示: oracleDataReader odr = command.ExecuteReader(); 但是在执行该语句的过程中,该进程需要大约1,5 Gb的RAM,这不是很好 你知道如何节省一些内存吗?首先,如果可能的话,尽量在查询中添加一些where子句。你确定一次需要所有2200万的结果吗 然后您可以从…更改选择*。。。。选择columnA,

我有一个select*from tables..JOIN。。。对oracle数据库的查询,将返回大约2200万行。我正在使用C和ODP.NET,如下所示:

oracleDataReader odr = command.ExecuteReader();
但是在执行该语句的过程中,该进程需要大约1,5 Gb的RAM,这不是很好


你知道如何节省一些内存吗?

首先,如果可能的话,尽量在查询中添加一些where子句。你确定一次需要所有2200万的结果吗


然后您可以从…更改选择*。。。。选择columnA,columnB from。。。这也会节省一些内存,因为选择*。。。从该查询中使用的所有列和表返回数据。那可能没有效果。问候语:

首先,如果可能的话,请尝试在查询中添加一些where子句,以最小化结果量。你确定一次需要所有2200万的结果吗


然后您可以从…更改选择*。。。。选择columnA,columnB from。。。这也会节省一些内存,因为选择*。。。从该查询中使用的所有列和表返回数据。那可能没有效果。问候语:

Oracle必须支持以下表达式:
从ROWNUMOracle必须支持此表达式的表中选择*:
从ROWNUM所在的表中选择*您真的必须选择这么多行吗?如果是这样,您不能将select拆分为多个较小的select吗?是的,您可以尝试进行分页查询,而不是在数据库上执行1.5GB的查询,还是在运行C的位置执行查询?当你得到这些行时,你在做什么?你真的要选择那么多行吗?如果是这样,您不能将select拆分为多个较小的select吗?是的,您可以尝试进行分页查询,而不是在数据库上执行1.5GB的查询,还是在运行C的位置执行查询?当你得到这些行时,你在做什么?