16.20 - ANSI Valid-Timeテーブルの行パーティション化 - Teradata Vantage NewSQL Engine

Teradata Vantage™ ANSIテンポラル テーブル サポート

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1186-162K-JPN

問合わせのパフォーマンスを高めるには、テンポラル テーブルの行をパーティション化する必要があります。パーティション化により、テーブルの行を論理的に現在行と履歴行にグループ化します。現在行の問合わせは自動的に現在行を含むパーティションに向けられます。

テンポラル テーブルに列パーティション化を適用することもできますが、ここで説明する行パーティション化が、テンポラル テーブルに使用されるパーティション化のタイプの1つとして必ず構成される必要があります。

例: ANSI valid-timeテーブルの行パーティション化

valid-timeテーブルを行パーティション化するには、次のPARTITION BY句を使用します。

CREATE MULTISET TABLE employee_vt (
       eid INTEGER NOT NULL,
       ename VARCHAR(5) NOT NULL,
       terms VARCHAR(5),
       job_start DATE NOT NULL,
       job_end DATE NOT NULL,
       PERIOD FOR job_dur(job_start,job_end) AS VALIDTIME
   ) PRIMARY INDEX(eid)
   PARTITION BY
     CASE_N(
      END(job_dur)>= CURRENT_DATE AT INTERVAL - 12:59' HOUR TO MINUTE, 
                   NO CASE);
パーティション化式では、job_endの代わりにEND(job_dur)を使用する場合があります。

現在パーティションの保守

時間の経過とともに現在行は履歴行になるので、ALTER TABLE TO CURRENT文を定期的に使用して、現在パーティションの履歴行を履歴パーティションに移動する必要があります。ALTER TABLE TO CURRENTではパーティション式を再度解決します。これにより、各行は最新のパーティション式でそれぞれに適したパーティションに移動されます。以下に例を示します。

ALTER TABLE  temporal_table_name  TO CURRENT;

この文では、表に定義されたプライマリキーと固有性制約のために自動的に作成される、システム定義の結合インデックスも更新します。