以下の一連のルールは、AS … WITH DATA AND STATISTICS句にのみ当てはまります。これらのルールはAS … WITH NO DATA句には影響しません。CREATE TABLE AS … WITH NO DATAに関する一般ルールを参照してください。
- 統計をコピーできるターゲット テーブルの列、またはインデックスがない場合、システムはリクエスト側に警告メッセージを返します。
- ターゲット テーブルの明確なインデックス定義を指定している場合、システムはPARTITION統計をソース テーブルからターゲット テーブルにコピーしません。
これは、単一列のPARTITION統計とシステム派生PARTITION列を含む列 セットの複合統計のどちらにも当てはまります。
- 指定したソース テーブル列、またはインデックス セットで統計が収集されていない場合、システムはAND STATISTICSオプションを無視し、リクエスト側に警告メッセージを返します。
- ソース テーブルの統計サブセットだけがターゲット テーブルの列およびインデックスにコピーできる場合、システムはリクエスト側に警告メッセージを返します。
- ターゲット テーブルにコピーするように指定した複数列統計の数が、複数列統計に指定できる最大数(1つのテーブルに対して収集して維持できる複数列統計の最大数は32)を超えている場合、システムは上限までの複数列統計だけをコピーし、残りの複数列統計はターゲット テーブルにコピーせず、リクエスト側に警告メッセージを返します。
- MULTISETソース テーブルのすべての列が非固有であり、ターゲット テーブルがSETテーブルの場合、システムは統計をターゲット テーブルにコピーしません。 これは、ソース テーブルおよびターゲット テーブルの等値カーディナリティのルールに違反する可能性があるためです。 ソース テーブルに重複行がある場合は、システムはターゲット テーブルにコピーする前にこれらを除去するため、2つのテーブルでカーディナリティが等値になりません。
- ソース テーブルに少なくとも1つの非固有列があり、ターゲット テーブルがSETテーブルの場合、他のすべてのルールに準拠していれば、システムは統計をソース テーブルからターゲット テーブルにコピーします。
- ターゲット テーブル定義の列に対してNOT CASESPECIFIC属性を指定しており、この属性が対応するソース テーブルの列属性の指定と一致しない場合、システムは列またはインデックス セットの統計をコピーしません。これは、ターゲット テーブルのデータを変更しないというルールに違反する可能性があるためです。
- ソース テーブルのすべての列が非固有である場合に、ターゲット テーブル定義でいずれかの列にNOT CASESPECIFIC属性を指定していて、それが対応するソース テーブル列の属性定義と一致しない場合、システムはこの列またはインデックスの統計をコピーしません。これは、ソース テーブルおよびターゲット テーブルの等値カーディナリティのルールに違反する可能性があるためです。
- 対応するソース テーブルのソース テーブル列属性定義と一致しないターゲット テーブル定義の列に対してUPPERCASE属性を指定している場合、システムはこの列またはインデックスの統計をコピーしません。これは、ターゲット テーブルのデータを変更しないというルールに違反する可能性があるためです。
- ターゲット テーブルの対応する列セットに対してターゲット テーブル インデックスが定義されていない場合、Teradata Databaseはソース テーブルの単一列のインデックス統計をターゲット テーブルの単一列の列統計にコピーします。
- ターゲット テーブルの対応する列に対してインデックスが定義されている場合、Teradata Databaseはソース テーブルの単一列の列統計をターゲット テーブルの単一列のインデックス統計にコピーします。
- ソース テーブル インデックス定義がターゲット テーブルに対して定義されていない場合、Teradata Databaseは複合インデックス統計を複数列統計としてソース テーブルからターゲット テーブルにコピーします。
- 列セットに対して定義したインデックスがターゲットにある場合、Teradata Databaseは複数列統計を複合インデックス統計としてソース テーブルからターゲット テーブルにコピーします。