問合わせのパフォーマンスを高めるには、テンポラル テーブルの行をパーティション化する必要があります。パーティション化により、テーブルの行を論理的にオープン行とクローズ行にグループ化します。オープン行の問合わせは自動的にオープン行を含むパーティションに向けられます。
テンポラル テーブルに列パーティション化を適用することもできますが、ここで説明する行パーティション化が、テンポラル テーブルに使用されるパーティション化のタイプの1つとして必ず構成される必要があります。
例: ANSI System-Timeの行パーティション化
system-timeテーブルを行パーティション化するには、次のPARTITION BY句を使用します。
CREATE MULTISET TABLE employee_systime ( eid INTEGER NOT NULL, ename VARCHAR(10) NOT NULL, deptno INTEGER NOT NULL, sys_start TIMESTAMP WITH TIME ZONE NOT NULL GENERATED ALWAYS AS ROW START, sys_end TIMESTAMP WITH TIME ZONE NOT NULL GENERATED ALWAYS AS ROW END, PERIOD FOR SYSTEM_TIME(sys_start, sys_end) ) PRIMARY INDEX(eid) WITH SYSTEM VERSIONING PARTITION BY CASE_N (END(SYSTEM_TIME) >= CURRENT_TIMESTAMP, NO CASE);
パーティション化式では、sys_endの代わりにEND(SYSTEM_TIME)を使用する場合があります。
現在パーティションの保守
時間の経過とともに現在行は履歴行になるので、ALTER TABLE TO CURRENT文を定期的に使用して、現在パーティションの履歴行を履歴パーティションに移動する必要があります。ALTER TABLE TO CURRENTではパーティション式を再度解決します。これにより、各行は最新のパーティション式でそれぞれに適したパーティションに移動されます。以下に例を示します。
ALTER TABLE temporal_table_name TO CURRENT;
この文では、表に定義されたプライマリキーと固有性制約のために自動的に作成される、システム定義の結合インデックスも更新します。