Performance Considerations with OLE DB
This section identifies performance issues related to OLE DB.
Cache Engine
The PSQL cache engine can impact performance of the OLE DB provider when used in a client/server environment. You may want to disable the cache engine using PSQL Control Center depending on your configuration. Static cursors are most affected by this issue.
Best Performance is Navigational
Server-side navigational recordsets will have a significant performance advantage over command-based recordsets for tasks that require frequent positioning on records that contain specific values.
Static vs. Dynamic Cursors
Static cursors will create a temporary table behind the scenes whenever one would not have been created by the relational engine (for more information about temporary tables, see SQL Engine Reference). This will be the case for both command-based and navigational tables. When bandwidth is not a significant consideration, dynamic cursors can provide higher performance, since they do not always involve temporary tables. However, in low bandwidth scenarios, round-trips can be too expensive to justify dynamic cursors; in this case RDS is often a good solution. The drawback to RDS is that Microsoft has implemented it as a command-based only solution, which means that index functionality (using Seek) is unavailable. Performance can be maintained regardless of deployment by implementing an abstraction layer that works identically on RDS-based and local recordsets. The nature of this abstraction would depend on the needs of the application and would likely take the form of a runtime business object.
Disable Unused Services
When developing OLE DB applications, a way to improve performance is to turn off any OLE DB Services that are not being used. See the documentation for DBPROP_INIT_OLEDBSERVICES for more information.
Turning off the Automatic Transaction Enlistment will not instantiate the ITransactionJoin interface on the session and will also keep the provider from looking for MTS objects.