例: 結合インデックス定義をともなうEXTRACT関数の使用 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/spp1591731285373.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

結合インデックスの定義はEXTRACT関数をサポートしています。

以下の例では、集約結合インデックスの定義の中でEXTRACT関数を使用する方法を説明します。

    CREATE JOIN INDEX ord_cust_idx_2 AS
    SELECT c_nationkey, SUM(o_totalprice(FLOAT)) AS price,
           EXTRACT(YEAR FROM o_orderdate) AS o_year
    FROM orders, customer 
    WHERE o_custkey = c_custkey 
    GROUP BY c_nationkey, o_year
    ORDER BY o_year;

この集約はo_orderdateの年だけを基盤としており、これはo_orderdate全体と比較して少数のグループです。このため、ord_cust_idx_2はord_cust_idxより大幅に小さくなります。

他方、ord_cust_idx_2の使用はord_custidxに比べて制限されています。特に、ord_cust_idx_2は、全年数の注文を選択する問合わせを満たすためのみに使用できます。

例えば、ord_cust_idx_2は例: 集約結合インデックスの作成および使用で分析される問合わせには使用できません。しかし、以下の問合わせの場合はord_cust_idx_2の使用にメリットがあります。

    SELECT COUNT(*), SUM(o_totalprice) 
    FROM orders, customer 
    WHERE o_custkey = c_custkey 
    AND   o_orderdate > DATE '1998-01-01'
    AND   o_orderdate < DATE '1998-12-31' 
    GROUP BY c_nationkey;