Join Indexes and Tactical Queries - Teradata Database

Teradata Database Design

Product
Teradata Database
Release Number
15.10
Language
English (United States)
Last Update
2018-10-06
Product Category
Software

Join Indexes and Tactical Queries

Single-Table Join Indexes

One of the most useful constructs for tactical queries is the single-table join index. Because you can define a primary index for the join index composed of different columns than those used to define the base table primary index, you can create an alternative method of directly accessing data in the associated base table.

For example, you could create a join index on the orders table that includes only a subset of the columns that a particular tactical query application might require. In the example shown in the following graphic, assume that the application has available a value for o_custkey and the clerk that placed the order, but does not have a value for o_orderkey. Specifying the primary index defined for the join index OrderJI supports direct access to order base table using the single‑table join index OrderJI.

     CREATE JOIN INDEX OrderJI AS
       SELECT o_custkey, o_clerk, o_totalprice, o_orderdate, o_orderkey
       FROM orders
     PRIMARY INDEX(o_custkey,o_clerk);

A test against an orders table with 75 million rows, both with and without the OrderJI join index, returned the following response times from the query and join index above:

 

If the query is run …

The response time is …

without the join index

1:55.

with the join index

subsecond.

The larger the base table is, the longer it takes to process via a table scan, and the greater the benefit a join index providing single-AMP access provides. In this example, the join index took 8:23 to create.

A single-table join index like this one is particularly useful when the tactical application does not have the primary index of the base table available, but has an alternative row identifier. This might be the case when a social security number is available, but a member ID, the primary index of the base table, is not. Single-AMP access would still be achievable using the join index if its primary index is defined on social security number.