更新可能現在日付、または更新可能現在タイムスタンプ関数を使用したパーティション式を、結合インデックスに対して定義することができます。これにより、最新のデータを含むパーティションをできるだけ絞り込み、そのパーティションの行へ、より効率的にアクセスできるようになります。
他にも更新可能現在日付および更新可能現在タイムスタンプの利点として、これらに基づく式は、時間の経過に従って再定義する必要がないことがあります。代わりに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を使用した結合インデックスのパーティションの変更を参照してください。