次に示す表では、二重テンポラル テーブルに推奨されるパーティション式について説明しています。この式のvtcolumnはvalid-time列を表わし、ttcolumnはtransaction-time列を表わします。
valid-time列のデータ型 | 推奨されるパーティション式 |
---|---|
PERIOD(DATE) NOT NULL | PARTITION BY CASE_N( END(vtcolumn) >= CURRENT_DATE AT '-12:59' AND END(ttcolumn) >= CURRENT_TIMESTAMP, END(vtcolumn) < CURRENT_DATE AT '-12:59' AND END(ttcolumn) >= CURRENT_TIMESTAMP, END(ttcolumn) < CURRENT_TIMESTAMP) (AT '-12:59'はAT INTERVAL -'12:59' HOUR TO MINUTEの省略形) (END(ttcolumn) < CURRENT_TIMESTAMP式は、クローズ行を表わすもので、より最適なパーティション排除を実現するために、NO CASEの代わりに使用します) |
PERIOD(DATE) | PARTITION BY CASE_N( (END(vtcolumn) IS NULL OR END(vtcolumn) >= CURRENT_DATE AT '-12:59') AND END(ttcolumn) >= CURRENT_TIMESTAMP, END(vtcolumn) < CURRENT_DATE AT '-12:59' AND END(ttcolumn) >= CURRENT_TIMESTAMP, END(ttcolumn) < CURRENT_TIMESTAMP) (AT '-12:59'はAT INTERVAL -'12:59' HOUR TO MINUTEの省略形) |
PERIOD(TIMESTAMP[(n)] [WITH TIME ZONE]) NOT NULL | PARTITION BY CASE_N( END(vtcolumn) >= CURRENT_TIMESTAMP AND END(ttcolumn) >= CURRENT_TIMESTAMP, END(vtcolumn) < CURRENT_TIMESTAMP AND END(ttcolumn) >= CURRENT_TIMESTAMP, END(ttcolumn) < CURRENT_TIMESTAMP) |
PERIOD(TIMESTAMP[(n)] [WITH TIME ZONE]) | PARTITION BY CASE_N( (END(vtcolumn) IS NULL OR END(vtcolumn) >= CURRENT_TIMESTAMP) AND END(ttcolumn) >= CURRENT_TIMESTAMP, END(vtcolumn) < CURRENT_TIMESTAMP AND END(ttcolumn) >= CURRENT_TIMESTAMP, END(ttcolumn) < CURRENT_TIMESTAMP) |
二重テンポラル テーブルに推奨される行によるパーティション化を使用すると、そのパーティションは次に示すようになります。
- 現在パーティションには、パーティション式のCURRENT_TIMESTAMP値が最後に解決された時点で、オープン行である(または、オープン行であった)行と、有効行である(または、有効行であった)行が保持されます。
- valid-time履歴/transaction-timeオープン パーティションには、パーティション式のCURRENT_DATE値またはCURRENT_TIMESTAMP値が最後に解決された時点で、非有効になった(または、非有効だった)行のうちオープン行である行が保持されます。
- transaction-time履歴パーティションには、パーティション式のCURRENT_DATE値またはCURRENT_TIMESTAMP値が最後に解決された時点で、クローズされていた行が保持されます。