CREATE
TABLE
AS
SELECT
文には、CREATE
部分(DDL)とSELECT
部分(問合せ)の2つの部分があります。Oracle Databaseではこの文の両方の部分をパラレル化できます。CREATE
部分は他のDDL操作と同じルールに従います。
この項の内容は次のとおりです。
CREATE
TABLE
AS
SELECT
文の問合せ部分をパラレル化できるのは、次の条件が満たされる場合のみです。
問合せにパラレル・ヒントの指定(PARALLEL
またはPARALLEL_INDEX
)が含まれるか問合せに指定された少なくとも1つの表で、全表スキャンまたは複数のパーティションに及ぶ索引レンジ・スキャンが必要である。文のCREATE
部分にPARALLEL
句が指定されているか、問合せで参照されているスキーマ・オブジェクトにPARALLEL
宣言が関連付けられている。
問合せに指定された少なくとも1つの表で、全表スキャンまたは複数のパーティションに及ぶ索引レンジ・スキャンが必要である。
CREATE
TABLE
... AS
SELECT
文の問合せ部分のDOPは、次のいずれかのルールによって決まります。
問合せ部分は、CREATE
部分のPARALLEL
句に指定された値を使用します。
PARALLEL
句が指定されない場合、デフォルトDOPはCPUの数です。
CREATE
がシリアルな場合、DOPは問合せによって決まります。
並列処理のヒントに指定される値はすべて無視されます。
CREATE
TABLE
AS
SELECT
のCREATE
操作は、PARALLEL
句またはALTER
SESSION
FORCE
PARALLEL
DDL
文によってのみパラレル化できます。
CREATE
TABLE
AS
SELECT
のCREATE
操作がパラレル化されるとき、可能であればスキャン操作もパラレル化されます。スキャン操作をパラレル化できないのは次のような場合です。
SELECT
句にNO_PARALLEL
ヒントがある場合。
操作によって非パーティション表の索引がスキャンされる場合。
CREATE
操作がパラレル化されないとき、SELECT
をパラレル化できるのは、PARALLEL
ヒントがある場合、または選択される表(またはパーティション索引)にパラレル宣言がある場合です。