17.10 - 例: 更新可能なCURRENT_DATE関数を使用した結合インデックスの作成 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)

更新可能現在日付、または更新可能現在タイムスタンプ関数を使用したパーティション式を、結合インデックスに対して定義することができます。これにより、最新のデータを含むパーティションをできるだけ絞り込み、そのパーティションの行へ、より効率的にアクセスできるようになります。

他にも更新可能現在日付および更新可能現在タイムスタンプの利点として、これらに基づく式は、時間の経過に従って再定義する必要がないことがあります。代わりにALTER TABLE TO CURRENTリクエストを使用して式とパーティションを更新し(ALTER TABLE TO CURRENTを参照)、日付とタイムスタンプの値をより新しい日付やタイムスタンプに調整できます。これによって、結合インデックスに対してパーティション式を定義および保守する簡単な手段が提供され、また、最新ではなくなった現在日付やタイムスタンプの値を持つインデックスを削除して再作成する必要性がなくなります。

2009年1月1日に以下のテーブルを作成すると仮定します。

     CREATE SET TABLE customer, NO FALLBACK (
       cust_name              CHARACTER(10),
       cust_no                INTEGER,
       policy_expiration_date DATE FORMAT 'YYYY/MM/DD')
     PRIMARY INDEX (cust_no) 
     PARTITION BY CASE_N(policy_expiration_date>=CURRENT_DATE,
                         policy_expiration_date<CURRENT_DATE 
                     AND policy_expiration_date>=CURRENT_DATE-
                                                 INTERVAL '3' MONTH);

2009年1月1日に、Updatable CURRENT_DATE関数を指定するパーティション式を使用して、customerに結合インデックスを作成することにしました。インデックスは、現行四半期のデータのみを含むように作成します。

     CREATE JOIN INDEX j_sales AS 
       SELECT * 
       FROM sales 
       WHERE sale_amt>=2000.00
     PRIMARY INDEX (store_ID)
     PARTITION BY CASE_N(sale_date >= CURRENT_DATE, NO CASE);

CURRENT_DATEが2009年1月1日に解決すると、結合インデックスj_salesには以下の行が入ります。

store_ID
amount
sale_date
PARTITION
1
2000.00
2009-01-01
1
1
3500.00
2009-01-15
1
1
2000.00
2008-12-15
2
1
5000.00
2009-04-01
1

2009年4月1日に、j_salesに対して次のALTER TABLE TO CURRENTリクエストを実行します。

     ALTER TABLE j_sales TO CURRENT;

結合インデックスの行は次のように調整されます。

store_ID
amount
sale_date
PARTITION
1
2000.00
2009-01-01
2
1
3500.00
2009-01-15
2
1
2000.00
2008-12-15
2
1
5000.00
2009-04-01
1

ALTER TABLE TO CURRENTリクエストを使用してこの結合インデックスのパーティションを調整する方法の例については、例: ALTER TABLE TO CURRENTを使用した結合インデックスのパーティションの変更を参照してください。