An "index bracket
" is a set of consecutive entries in an index.
- A bracket is defined by an index identifier (index number), a low-key value, and a high-key value.
- All the index entries starting with low-key value and ending with high-key value are included in the bracket.
- A "bracket scan" is an operation which examines index entries from the low-key value to high-key value.
There are two types of brackets: equality brackets and range brackets.
- Equality brackets define a set of consecutive index entries that have an equality match on a key. The low-key value and high-key values are the same for an equality match.
- Range brackets define a set of consecutive index entries from the low-key value to high-key value.
Except when using a FIND BY ROWID, Progress always uses at least one index bracket to retrieve one or more rows.
At compile time, ABL determines which index or indexes to use for retrieving records from a table, based on the conditions in the Record phrase.
All records in the index may need to be scanned to find those meeting the conditions (not-optimal), or only a subset of the records are examined due to efficient index bracketing.
Once an index is selected, Progress examines each component as follows to see if the index can be bracketed:
a) If the component has an active equality match
, Progress can bracket it, and it examines the next component for possible bracketing.
b) If the component has an active range match
, Progress can bracket it, but it does not examine the remaining components for possible bracketing.
c) If the component does not have an active equality match or an active range match, Progress does not examine the remaining components for bracketing.
The ABL can be forced to use only one index by specifying the USE-INDEX option or by using the Version 6 Query (-v6q) parameter.