Administration: Optimizing Queries

Configuring Omnidex

Optimization Settings

Omnidex has two main configuration settings for controlling optimization of queries. The first option tells Omnidex which approaches it may use as needed to optimize a query. The second option tells Omnidex which approaches are required when optimizing a query, or else the query should not be processed.


The OPTIMIZATION setting controls the approaches available to Omnidex when it optimizes a query. This setting can be set using an option on the SELECT statement, or with a SET OPTIMIZATION command:

select ... with OPTIMIZATION='setting1,setting2,setting3,...'
set optimization setting1,setting2,setting3,...

The OPTIMIZATION settings are shown in the table below. The default setting is shown in bold.

Setting to
allow optimization
Setting to
disallow optimization

QUAL NO_QUAL Omnidex can use indexes to perform qualifications, usually to process criteria in the WHERE clause.
AGGREGATION NO_AGGREGATION Omnidex can use indexes to perform aggregations, including grouped counts, distinct counts, sums, averages, mins and maxes.
ORDERBY NO_ORDERBY Omnidex can use indexes to perform ordering as required by the ORDER BY clause.
IDXRETRIEVAL NO_IDXRETRIEVAL Omnidex can use indexes to retrieve select items for the result set, avoiding access to the database.
CACHEQUAL NO_CACHEQUAL Omnidex can reuse qualifications from the previous query on this connection.
DISTINCT_KEY NO_DISTINCT_KEY Omnidex can perform aggregations against a QuickText index, and the result set represents an entry per keyword rather than an entry per row.
ROLLUP NO_ROLLUP Omnidex can redirect redirect the query to a Rollup Table for improved performance.
SORTMERGE NO_SORTMERGE Omnidex can perform a sort/merge join operation between two tables in order to improve performance.
HDC NO_HDC Omnidex can use a temporary Hashed Data Cache for improved performance.
LINK NO_LINK Omnidex can use indexes to perform table joins.

PRIKEY NO_PRIKEY Omnidex can favor using the underlying databases primary key indexes rather than using Omnidex indexes.
STARSCHEMA NO_STARSCHEMA Omnidex can perform intermediate aggregations in the fact table of a star schema prior to accessing the dimension tables.
UNRESTRICTEDQUAL NO_UNRESTRICTEDQUAL Omnidex can ignore the normal restrictions on special characters, embedded operators and index options when performing qualifications.
NONE Omnidex should disable all available optimizations when processing this query.
NO_ODX Omnidex should disable all optimizations that would involve Omnidex indexes when processing this query.


The REQUIRED_OPTIMIZATION setting instructs Omnidex to insure that the named optimizations will be performed for a query. If a REQUIRED_OPTIMIZATION setting cannot be performed, then the query will return an error condition. This setting can be set using an option on the SELECT statement:

select ... with REQUIRED_OPTIMIZATION='setting1,setting2,setting3,...'

The REQUIRED_OPTIMIZATIONS settings are shown in the table below:

Setting Description
NO_XREF_FILES Do not create Cross-Reference files when processing this query. Cross-Reference files are sometimes used to optimize complex, many-to-many table relationships, but they generally cause a query to take a lot of time, especially on large databases.
NO_UNOPTIMIZED_CRITERIA Do not allow any criteria to be processed without the use of Omnidex indexing.
NO_CARTESIAN_PRODUCTS Do not allow Cartesian Joins. Cartesian Joins occur when tables are joined together without any join criteria. While there are rare cases when Cartesian Joins are desireable, they are usually an indication of missing join criteria.
NO_UNOPTIMIZED_AGGREGATIONS Do not allow any aggregations to be processed without the use of Omnidex indexing.
NO_UNOPTIMIZED_SORTS Do not allow any sorts to be processed without the use of Omnidex indexing.
NO_SEQUENTIAL_SCANS Do not allow any sequential table scans.
NO_SEQUENTIAL_TABLE_JOINS Do not allow any sequential table joins. A sequential table join indicates that all rows in the second table will be scanned sequentially for each row in the first table. This is the most inefficient way to perform a join, and is only necessary when Omnidex indexing, underlying database indexing, table caching and sort/merging cannot be used.
NO_GRID_AGGREGATIONS Do not allow any aggregations to be performed on the grid controller that require reaggregating data on the grid controller.

Additional Resources

See also:

Back to top
admin/optimization/config/optimizations.txt ยท Last modified: 2016/06/28 22:38 (external edit)