0

需要从一个表中检索 200000 条记录并对每条记录进行处理。数据库是oracle。目前使用 fetch_rowarrayref 方法并对每条记录进行处理。对于大量记录,设置 5000 条记录和循环的获取限制是否有效。Mysql 有一个 LIMIT 关键字,但 oracle 没有它。不知道如何在 dbi 中做到这一点。

将 5000 条记录提取到数组中 从数组中再次提取处理,直到达到 100000 条记录

4

2 回答 2

1

使用分页不会比你正在做的更有效。分页的目的是避免内存不足,但如果不是(并且 Oracle 不应该使用 DBD::Oracle),那么就没有任何好处。

如果此操作太慢,那么您有几个基本选项。

  1. 在靠近数据库的地方进行转储(减少延迟)。
  2. 选择更少的数据。
  3. 有多个进程并行查询。
  4. 使用专用的批量导出工具。
  5. 重新设定期望,这样你就可以忍受它。
于 2013-07-29T05:11:41.213 回答
-1

您的任务在获取数据并对其进行处理时看起来像分页,以编写分页类型查询

select *
 from (
select /*+ first_rows(25) */
  your_columns,
  row_number() 
  over (order by something unique)rn
 from your_tables )
where rn between :n and :m 
order by rn;

:n = 起始行 :m = 结束行 rn = 执行排序的列

有关更多信息,您可以参考链接 #1链接 #2

于 2013-07-29T03:34:56.510 回答