2010-08-17 36 views
1

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

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

当前性能是100k行/秒。如果我想让它变得更快,我是否期待太多?

澄清:

表具有23M记录

查询是:SELECT ID FROM OBJECTS

瓶颈是从Oracle转移到客户端软件,该软件是C++/OLEDB

+1

您的问题有些不详细。你的客户如何使用这些行?排序顺序是否重要?总共有多少行?执行的查询是否复杂?网络流量是否会产生影响?磁盘I/O是否有影响? – APC 2010-08-17 13:01:15

+0

同意APC。没有比这个简单的select语句更快的方法,但其他变量可能会产生影响。 – rkellerm 2010-08-17 14:27:11

+0

使用“WHERE”子句?从id = criteria的对象中选择id。或者,看看“之间” – JustBoo 2010-08-17 18:04:56

回答

1

什么嘿,我会抓住机会。

编辑:至于连接,我HEARTILTY建议:

Oracle Objects for OLE,OO4O的简称。

它是由Oracle for Oracle生成的,而不是由MS生成的。它使用高性能本地驱动程序,而不是ODBC来提高性能。我个人亲自使用过这个,而且速度很快。我连接到非常大的数据库和数据仓库,每个表的数据永远不会少于200万条记录,其中大部分数据量都大得多。

注意你不需要知道OLE来使用它。它包装OLE,因此名称。在概念上和语法上,它将“结果集”包装成由SQL命令提供的动态集。如果您曾经使用DAO或ADO,您将在5分钟内生产。

这里有一个更深入的article.

如果您不能使用OO4O,然后通过Oracle提出专门的.NET数据提供程序是非常好的。不是由MS制造的。

HTH


使用 “WHERE” 条款?例如:“从对象选择ID其中id =标准”

WHERE

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

或者看看“之间”。

“从对象选择id其中thisone和thatone之间的ID”

BETWEEN

,在您指定的范围将缩减的记录。

HTH