skip to main content
OpenEdge Data Management: DataServer for ODBC
Connecting the DataServer : Connecting a schema holder : Query tuning with connection and startup parameters
 

Query tuning with connection and startup parameters

You can control aspects of DataServer query handling not only programmatically within ABL statements, but also through startup and connection parameter options as described in this section.
Note: Startup and connection parameters override query-tuning defaults. However, options set in the QUERY–TUNING phrase take precedence over startup and connection parameters. For example, if you specify NO–DEBUG for a query within your application, specifying qt_debug,SQL at connection time overrides the default application behavior but does not override the NO–DEBUG option that you specified for the query. See Query tuning for more information.
You override query-tuning defaults with the DataServer (-Dsrv) connection parameter when you connect to an ODBC data source. This is the syntax:
CONNECT data-source-name -dt ODBC
-Dsrv query-tuning-option1,value1
-Dsrv query-tuning-option2,value2.
An alternate syntax for the -Dsrv parameter is:
CONNECT data-source-name -dt ODBC -Dsrv
query-tuning-option1,value1,query-tuning-option2,value2.
The following table describes the query-tuning options that you can specify with the -Dsrv parameter.
Table 18. Connection query-tuning options
Option
Description
qt_lookahead qt_no_lookahead
Specifies whether the DataServer uses lookahead or standard cursors. To generate efficient queries, qt_lookahead is the default in the following cases:
*Statements that use NO-LOCK
*Statements that use SHARE-LOCK with transaction isolation level set to read uncommitted
Specify qt_no_lookahead for query behavior that is consistent with an OpenEdge database.
qt_separate_connection qt_no_separate_connection
Specifies whether each cursor should use a separate connection to the ODBC data source. The default is qt_no_separate_connection, which provides behavior that is consistent with OpenEdge.Specify qt_separate_connection to use a separate connection. Executing cursors in separate connections can improve performance because the DataServer does not have to restart the cursors.
qt_cache_size, integer
Specifies the size in bytes of the cache used by lookahead cursors. A larger cache size can improve performance for queries that return a large number of records because the DataServer might need fewer SQL statements to get the results.Minimum: The DataServer always caches at least one record.Maximum: NoneDefault: 30000
The following example shows how to use the query-tuning options to enhance performance. The DataServer opens a separate connection to ODBC for each cursor and writes an extended report on the SQL statements it executes:
CONNECT holder -db infdb -dt ODBC -ld demo -U user -P password -Dsrv qt_separate_connection,qt_debug,EXTENDED.
OpenEdge provides a startup parameter called Server Join (-nojoinbysqldb) that controls the default JOIN–BY–SQLDB behavior. You specify this parameter in the startup command for your OpenEdge session. It overrides the JOIN–BY–SQLDB default so that the client evaluates and performs joins. Using this parameter might slow performance, but it provides results that are consistent with OpenEdge behavior. See Programming Considerations for more information.