2010-08-17 34 views
1

Quelle serait la méthode la plus rapide pour extraire des données de la base de données Oracle via OLEDB?Lecture OLEDB la plus rapide à partir de ORACLE

Il devrait être portable (avoir à travailler sur Postgres et MS SQL), une seule colonne est transférée (ID d'une grande table).

La performance actuelle est de 100k lignes/sec. Est-ce que j'attends trop si je veux que ça aille plus vite?

Précision:

datatable a des dossiers 23m

Query est: SELECT ID OBJETS

Bottleneck est le transfert d'Oracle au logiciel client, qui est C++/OLEDB

+1

Votre question est un peu sous-détaillée. Comment votre client consomme-t-il ces lignes? L'ordre de tri est-il important? Combien de lignes au total? La requête exécutée est-elle compliquée? Le trafic réseau a-t-il un impact? Est-ce que le disque i/o a un impact? – APC

+0

D'accord avec APC. Il n'y a pas de moyen plus rapide que cette instruction select simple, mais d'autres variables peuvent avoir un impact. – rkellerm

+0

Utilisez une clause "WHERE"? sélectionnez id parmi les objets où id = criteria. OU, regardez dans "entre" – JustBoo

Répondre

1

Qu'est-ce que la diable, je vais prendre une chance.

Edit: En ce qui concerne la connectivité, je HEARTILTY recommande:

Oracle Objects for OLE, OO4O pour faire court.

Il est fait par Oracle pour Oracle, pas par MS. Il utilise des pilotes natifs hautes performances, PAS ODBC pour une amélioration des performances. Je l'ai moi-même personnellement utilisé à plusieurs reprises et c'est rapide. Je me connectais à des bases de données et des entrepôts de données extrêmement volumineux où chaque table ne comptait jamais moins de 2 millions d'enregistrements, la plupart étaient beaucoup plus grands.

Notez que vous n'avez pas besoin de connaître OLE pour l'utiliser. Il enveloppe OLE, d'où le nom. Conceptuellement et syntaxiquement, il enveloppe le "jeu de résultats" dans une feuille de réponse dynamique alimentée par des commandes SQL. Si vous avez déjà utilisé DAO, ou ADO, vous serez productif en 5 minutes.

Voici un plus en profondeur article.

Si vous ne pouvez pas utiliser OO4O, le fournisseur de données spécialisé .Net fait par Oracle est très bon. PAS celui fabriqué par MS.

HTH


Utilisez une clause "WHERE"? Exemple: « select id à partir d'objets où id = » critères

WHERE

Cela envoie uniquement le dossier d'intérêt à travers le réseau. Sinon, tous les 23 millions d'enregistrements sont envoyés à travers le fil.

OU, regardez dans "entre".

« select id à partir d'objets où id entre thisone et quel'un »

BETWEEN

qui envoie un ensemble réduit d'enregistrements dans la plage que vous spécifiez.

HTH