【发布时间】:2019-01-03 18:19:41
【问题描述】:
我有一个非常大的表,其中包含数十亿条记录,我需要从该表中读取所有数据。希望使用多个线程通过网络连接获取数据。只要这个操作需要时间,如果抓取应用程序能显示一种类似进度条的效果就好了。
我发现标准方法无效,因为 Oracle 需要很长时间才能找到页面的开头。下面是慢查询的例子:
select col1
from (select rownum as r, col1 FROM table1 where rownum<20010000)
where r>20000000
有没有更快的方法从这样的表中获取数据?
【问题讨论】:
-
为什么需要读取所有十亿行?你作为一个人没有,也不能......所以我想我要问的是,你打算用所有这些数据做什么?
-
我需要转换它并加载到另一个数据库中
-
你打算怎么改造它,你打算把它放到另一个oracle数据库中吗?
-
应用程序负责转换并将数据加载到非 Oracle 数据库中。
-
我想说在 db 中的 plsql 中进行转换 - 在那里可能会更快 - 然后你可以使用 utl 文件将数据的分隔文本文件写入服务器文件系统