1

OLEDBを介してOracleDBからデータを取得する最速の方法は何でしょうか。

移植可能である必要があり(PostgresおよびMS SQLで動作する必要があります)、1つの列のみが転送されます(大きなテーブルからのID)。

現在のパフォーマンスは100k行/秒です。もっと速くしたいのなら、期待しすぎですか?

明確化:

datatableには2300万件のレコードがあります

クエリは次のとおりです。オブジェクトからIDを選択

ボトルネックは、オラクルからクライアントソフトウェア(c ++ / OLEDB)への転送です。

4

1 に答える 1

1

なんてこった、チャンスをつかむよ。

編集:接続性に関しては、私は心からお勧めします:

Oracle Objects for OLE、略してOO4O。

これは、MSではなくOracleforOracleによって作成されています。パフォーマンスを向上させるために、ODBCではなく、高性能のネイティブドライバーを使用します。私はこれを何度か個人的に使用しましたが、高速です。私は非常に大規模なDBとデータウェアハウスに接続していました。すべてのテーブルが200万レコードを下回ることはなく、ほとんどがはるかに大きかったのです。

これを使用するためにOLEを知る必要はないことに注意してください。OLEをラップするため、この名前が付けられています。概念的および構文的に、「結果セット」をSQLコマンドによって供給されるダイナセットにラップします。DAOまたはADOを使用したことがある場合は、5分で生産性が向上します。

これがより詳細な記事です。

OO4Oを使用できない場合は、Oracle製の専用の.Netデータプロバイダーが非常に優れています。MS製のものではありません。

HTH


「WHERE」句を使用しますか?例:「id=基準であるオブジェクトからidを選択する」

どこ

これにより、関心のあるレコードのみがネットワーク全体に送信されます。それ以外の場合は、2,300万件のレコードすべてがネットワークを介して送信されます。

または、「間」を調べます。

「このオブジェクトとその間のIDを持つオブジェクトからIDを選択してください」

の間に

これにより、指定した範囲のレコードの削減されたセットが送信されます。

HTH

于 2010-08-17T18:09:16.673 に答える