QUERY-TUNING phrase
- Last Updated: February 11, 2026
- 3 minute read
- OpenEdge
- Version 13.0
- Documentation
Allows programmatic control over the execution of a query in a DataServer application. This phrase is available for the DataServers; it is not available for queries of OpenEdge databases.
Syntax
|
The following descriptions are general. For more detailed information, see the OpenEdge DataServer Guides (Use the Microsoft SQL Data Server and Use the Oracle Data Server).
- ARRAY-MESSAGE | NO-ARRAY-MESSAGE
- Specifies whether the DataServer sends multiple result rows
in a single logical network message.
The default is ARRAY-MESSAGE.
- BIND-WHERE | NO-BIND-WHERE
- This option is available only for the DataServer for ORACLE.
Specifies whether the DataServer uses ORACLE bind variables or literals in WHERE clauses. If you use NO-BIND-WHERE, the DataServer uses literals. Bind variables can improve performance, but ORACLE produces some unexpected results for some data types.
The default is BIND-WHERE.
- CACHE-SIZE integer[ ROW | BYTE ]
- Specifies the maximum cache size the DataServer can use when fetching
records for a lookahead or standard cursor. You can optionally specify
the size of the cache information in either bytes or records. The following
values are for ORACLE.
The default is 1024 for standard cursors and 8192 for lookahead cursors.
If you use the byte option, the byte maximum is 65535 bytes and the byte minimum specifies the number of bytes contained in a single record. For joins, you must specify the number of bytes contained in two records.
If you use the row option, the row maximum equals the maximum number of records that can be fit in 65535 bytes. The row minimum is 1 row for a single table and 1 rows for a join.
The default is 30000.
- { DEBUG { SQL | EXTENDED diag-option } } | NO-DEBUG
- Specifies whether the DataServer should print debugging information
for the query to the dataserv.lg file.
The SQL option prints the SQL executed by the DataServer against the non-OpenEdge DBMS. The extended option prints additional information, such as cursor statistics. The information you get when you use the EXTENDED option can be helpful in setting your parameters.
The default is NO-DEBUG.
- EXTENDED diag-option
- The syntax for the diagnostic options is as follows:
EXTENDED CURSOR | DATA-BIND | PERFORMANCE | VERBOSEFor more information, see the OpenEdge DataServer Guides (Use the Microsoft SQL Data Server and Use the Oracle Data Server).
- HINT
- This option is only available for the DataServer for ORACLE.
Specifies the ORACLE hint syntax that the DataServer passes directly to the ORACLE DBMS as part of the query. This allows you to control which hints are passed as opposed to the index hints that the DataServer passes when appropriate.
- INDEX-HINT | NO-INDEX-HINT
- This option is available only for the DataServer for ORACLE.
Specifies whether the DataServer provides index hints to the ORACLE DBMS. INDEX-HINT places index hints in the generated SQL; NOINDEX-HINT prevents the use of index hints.
The default is INDEX-HINT.
- JOIN-BY-SQLDB | NO-JOIN-BY-SQLDB
- Specifies whether the non-OpenEdge DBMS can perform joins when
possible, which usually improves performance.
The default is JOIN-BY-SQLDB.
- LOOKAHEAD | NO-LOOKAHEAD
- Specifies whether the DataServer uses lookahead or standard cursors.
Lookahead cursors fetch as many records as can fit into the allocated
cache, which reduces the number of database accesses and improves performance.
The default is LOOKAHEAD, except with statements that use an EXCLUSIVE lock.
- ORDERED-JOIN
- Specifies that the DataServer embed the ORDERED hint syntax in the SQL it generates. Applies to ORACLE only.
- REVERSE-FROM
- Specifies that tables are joined in the reverse order in which they appear in the FROM clause. Applies to ORACLE only.
- SEPARATE-CONNECTION | NO-SEPARATE-CONNECTION
- Creates a new connection for each cursor that the DataServer opens. Applies to the OpenEdge DataServer for Microsoft SQL Server only.
Example
The following code fragment illustrates a QUERY-TUNING phrase in a FOR EACH statement. In this example, the DataServer uses lookahead cursors with a cache size of 32K and records debugging information:
|
Note
For the DataServer for ORACLE, all options of the QUERY-TUNING phrase are effective at both compile and run time, except INDEX-HINT, NO-INDEX-HINT, JOIN-BY-SQLDB, and NO-JOIN-BY-SQLDB, which are only effective at compile time.
For more information on the QUERY-TUNING phrase, see the OpenEdge DataServer Guides (Use the Microsoft SQL Data Server and Use the Oracle Data Server).
See also
DO statement, FOR statement, OPEN QUERY statement, REPEAT statement