CREATE INMEMORY JOIN GROUP
目的
CREATE
INMEMORY
JOIN
GROUP
文を使用すると、同じ表または異なる表から頻繁に結合される列を指定するオブジェクトである結合グループを作成できます。通常、このような列には、類似する範囲内の互換性のあるデータ型の値が含まれています。結合グループを作成する際、列固有のメタデータがグローバル・ディクショナリに格納されるため、列の結合問合せが最適化されます。最適化を実現するためには、表の列をインメモリー列ストア(IM列ストア)に移入する必要があります。
表に結合グループを作成すると、現在メモリー内にあるこれらの表の内容は無効になります。これ以降に再移入すると、表のインメモリー圧縮単位(IMCU)がグローバル・ディクショナリを使用して再エンコードされます。このため、最初に結合グループを作成し、その後、表に移入することをお薦めします。
関連項目:
-
結合グループの詳細は、『Oracle Database In-Memoryガイド』を参照してください。
前提条件
別のユーザーのスキーマに結合グループを作成したり、結合グループに別のユーザーのスキーマ内の表の列を含めるには、CREATE
ANY
TABLE
システム権限が必要です。
構文
create_inmemory_join_group::=
セマンティクス
IF NOT EXISTS
IF NOT EXISTS
を指定すると、次の効果が得られます。
-
オブジェクトが存在していない場合は、文の最後に新しいオブジェクトが作成されます。
-
オブジェクトが存在している場合、これは文の最後の時点にあるオブジェクトになります。古いオブジェクトが検出されるため、新しいものは作成されません。
IF EXISTS
はCREATE
とともに使用すると、ORA-11543: Incorrect IF NOT EXISTS clause for CREATE statement
が発生します。
schema
結合グループを含むスキーマを指定します。schema
を指定しない場合、自分のスキーマ内に結合グループが作成されます。
join_group
作成する結合グループの名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。
schema
結合グループに含まれる列を含む表のスキーマを指定します。schema
を指定しない場合、表は自分のスキーマ内に存在すると想定されます。
table
結合グループに含める列を含む表の名前を指定します。
column
結合グループに含める列の名前を指定します。結合グループには、同じ表または異なる表の列を含めることができます。
結合グループの制限事項
結合グループには、次の制限事項が適用されます。
-
結合グループには、1つ以上の列が含まれている必要があります。
-
結合グループには、最大で255列を含めることができます。
-
表の列は、最大で1つの結合グループのメンバーにすることができます。
-
Oracle Active Data Guardでは、結合グループはサポートされていません。
例
次の文は、prod_id1
という名前の結合グループをoe
スキーマ内に作成します。この結合グループに関連する表は、どちらもoe
スキーマ内に格納されます。
CREATE INMEMORY JOIN GROUP prod_id1
(inventories(product_id), order_items(product_id));
次の文は、prod_id2
という名前の結合グループをoe
スキーマ内に作成します。表inventories
はoe
スキーマ内に格納され、表online_media
はpm
内に格納されます。
CREATE INMEMORY JOIN GROUP prod_id2
(inventories(product_id), pm.online_media(product_id));