Home

Getting Started

Utilities

Indexing

Omnidex

Development

Tutorials

Quick Links

 

OMNIDEX Indexing

Indexing Strategies

Domains

SI Domain

RS Domain

DR Domain

Hybrid-DR Domain

Sorted Multi-Find

Omnidex IDs by Domain

 

Indexing Strategies

DR (Detail Record) Domain

A DR (Detail Record) domain is a single, unjoined child table. This is the simplest approach to indexing because the table is indexed by itself as a stand-alone table. Joins to other tables are accomplished through Multi-finds.

  • A DR domain child table's Omnidex ID is a 32-bit Integer ID.
  • A 32-bit ID list is smaller than the 64-bit ID list that is necessary with a prejoined child table.
  • A 32-bit compare is much faster than a 64-bit compare that is necessary with a prejoined child table.
  • Bitmap Indexing can be used on a DR domain child table.
  • Joins from the DR child table to other tables will access the database, possibly slowing performance.

Similar to a parent table, a child table can be in its own domain. You need not prejoin a child table to a parent. This creates a DR domain. In this situation, the domain is named after the child table it contains. MDK indexes on a child table qualify child rows.

Unjoined child tables require less Omnidex indexing maintenance. Joining from those tables to another table during qualifications, however, may be slower and may require more system resources.

Multi-find performance has been greatly improved and may be the preferred join method over an RS domain, depending on the database. See the Sorted Multi-Find section for information on which to choose.

 

Hybrid DR Domain

Hybrid DR is a variation of a multi-domain child. It provides you with the ability to index a child in two ways:

  • as a DR domain
  • in an SI domain without specifying child indexes

You would install this domain combination when the table contains millions of records or when you want to do a bitmap join.

The benefits to indexing the child table in this manner are:

  • ease of indexing. There is no need to install a separate set of keyword indexes on the child for each domain where the child was linked. As a result, you do not have the costs discussed in the previous section.
  • faster compares. It allows 32-bit compares in the child domain versus 64-bit compares with Record Specific. This is typically faster unless you are on a 64-bit machine.
  • smaller ODXID lists. Record Specific uses 8 bytes per ID; an unjoined child uses 4 bytes per ID.
  • smaller indexes because the index just stores the child row IDs.

The following image shows an example of the domains created using this installation strategy:

To index the child table, ORDERS, in this way, you install the child as follows :

Table? Orders

To index this table in any parent domains enter the name of the field linking it to its parent

Link field 1:customer_no

Table will be indexed in the domain of CUSTOMERS.

No keys are declared in that child in that domain.

Link field 2:product_no

Table will be indexed in the domain of PRODUCTS.

No keys are declared in that child in that domain.

Link field 3:$DR

Table will be indexed in its own domain.

This causes the child to be indexed as an unjoined child.

Link field 4://

Enter fields for CUSTOMERS domain:

Keyword field://

Enter fields for PRODUCTS domain:

Keyword field://

Enter fields for ORDERS domain:

Enter all the fields you want installed in the child’s DR.

Keyword field:order_date

Keyword field:status

Keyword field://

Table name?//

When completed, the installation builds the Record Specific ID cross reference portion of the SI domain’s index file, but no indexes for the child table itself.

The Record Specific ID cross reference is built because $DR was entered when the child was installed. This is used in bitmap joins.

 

Top