一時表の作成について

【概要】
一時表とは、トランザクションの終了時、または、セッション終了時にデータが切り捨てられる表のことです。
複雑なクエリを複数のステップに分割する場合に利用します。

以下に一時表の簡単な作成方法を記載します。

【構文】

CREATE [ GLOBAL | LOCAL ] TEMPORARY | TEMP
… TABLE [ IF NOT EXISTS ] [[db-name.]schema.].table-name {
… ( Column-Definition (temp table) [ , … ] )
… | [ column-name-list (create table) ] }
… [ ON COMMIT { DELETE | PRESERVE } ROWS ]
… [ AS [ { AT EPOCH { integer | LATEST } | AT TIME ‘timestamp’} ]
… [ /*+ direct */ ] query ]
… [ ORDER BY table-column [ , … ] ]
… [ ENCODED BY column-definition [ , … ] ]
….[ Hash-Segmentation-Clause
……| UNSEGMENTED { NODE node
……| ALL NODES } ]
….[ KSAFE [ k-num ] ]
….| [ NO PROJECTION ] ]

【主なパラメータの説明】
パラメータ概要
GLOBAL|LOCALGLOBAL:作成した一時表を他のセッションでも使用することが可能です。
また、セッションが終了しても一時表は残ります。
LOCAL:作成した一時表を他セッションで使用するこができません。
また、セッションが終了すると一時表は削除されます。
DELETE | PRESERVEDELETE:更新されたデータはトランザクション内で有効でCOMMITするとデータが削除されます。
PRESERVE:更新されたデータはセッション内で有効で、セッションが終了するとデータが削除されます。

その他のパラメータに関しては「SQL Reference Manual」を参照してください。

【作成例】
■更新されたデータがトランザクション内で有効である例

■更新されたデータがセッション内で有効である例

■作成した一時表を他セッションでも使えるようにする例

■作成した一時表を該当セッションのみで使えるようにする例

※一時表の最適化は行えません。

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。