Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
需要从一个表中检索 200000 条记录并对每条记录进行处理。数据库是oracle。目前使用 fetch_rowarrayref 方法并对每条记录进行处理。对于大量记录,设置 5000 条记录和循环的获取限制是否有效。Mysql 有一个 LIMIT 关键字,但 oracle 没有它。不知道如何在 dbi 中做到这一点。
将 5000 条记录提取到数组中 从数组中再次提取处理,直到达到 100000 条记录
使用分页不会比你正在做的更有效。分页的目的是避免内存不足,但如果不是(并且 Oracle 不应该使用 DBD::Oracle),那么就没有任何好处。
如果此操作太慢,那么您有几个基本选项。
您的任务在获取数据并对其进行处理时看起来像分页,以编写分页类型查询
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