c++ - 从 ORACLE 读取最快的 OLEDB

标签 c++ oracle oledb atl bulk

通过 OLEDB 从 Oracle DB 检索数据的最快方法是什么?

它应该是可移植的(必须在 Postgres 和 MS SQL 上工作),只传输一列(来自某个大表的 ID)。

当前性能为 10 万行/秒。如果我想让它运行得更快,我是否期望过高?

澄清:

数据表有2300万条记录

查询是:SELECT ID FROM OBJECTS

瓶颈是从oracle传输到c++/OLEDB的客户端软件

最佳答案

算了,我来试试。

编辑:就连接性而言,我衷心推荐:

Oracle Objects for OLE , 简称OO4O。

它是由 Oracle 为 Oracle 而不是 MS 制作的。它使用高性能 native 驱动程序,而不是 ODBC 来提高性能。我自己曾多次亲自使用过它,而且速度很快。我正在连接到非常大的数据库和数据仓库,其中每个表都不会少于 200 万条记录,而且大多数都大得多。

请注意,您无需了解 OLE 即可使用它。它包装 OLE,因此得名。从概念上和句法上讲,它将“结果集”包装到一个由 SQL 命令提供的动态集中。如果您曾经使用过 DAO 或 ADO,您将在 5 分钟内变得高效。

这是更深入的 article.

如果你不会OO4O,那么Oracle专门做的.Net Data Provider就很好了。不是 MS 制作的。

HTH


使用“WHERE”子句?示例:“从 id = criteria 的对象中选择 id”

WHERE

这仅通过网络发送感兴趣的记录。否则所有 2300 万条记录都会通过网络发送。

或者,查看“之间”。

“从id介于thisone和thatone之间的对象中选择id”

BETWEEN

这会在您指定的范围内发送一组减少的记录。

HTH

关于c++ - 从 ORACLE 读取最快的 OLEDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501195/

相关文章:

c++ - 如何在QT Creator中检查ShellExecute命令返回(HINSTANCE)代码

c++ - 如何阻止 for 循环直到执行 sqlite 查询?

Java ResultSet 为空但实际上不应该为空

oracle - 如何比较不同环境PROD、DEV中的同一张表

c# - 无法通过 OleDb 读取大小超过 ~1mb 的 xlsx 文件

c# - 获取系统上安装的所有 Access ACE.OLEDB 驱动程序的列表

c++ - io.h 中的 _write 是阻塞调用吗?

c++ - 双向迭代器

oracle - 我是 PL/SQL 的新手。有人可以帮助我了解这个 PL/SQL 过程吗?

C#通过OleDb读取打开的Excel文件