CREATE TABLE … AS文でサブクエリーを指定してコピーするソース テーブルの列およびインデックス セットを定義している場合は、CREATE TABLE AS … WITH DATA AND STATISTICSに関する一般ルールに記載されているルール以外に、以下のルールが適用されます。
- Subqueryで複数のテーブル定義を指定している場合、複数テーブルの指定はターゲット テーブルのデータを変更する結合であるため、システムは統計をコピーしません。このため、ソース テーブルおよびターゲット テーブルのカーディナリティは同じである必要があるというルールに違反します。クエリーで指定した複数のテーブルの結合の除去が終了したときに、単一ソース テーブルを解決することができます。また、ルールで指定したように、システムはこの状況では統計をコピーしません。
- CREATE TABLE … AS文のサブクエリーで指定した列に固有の制約がなく、ターゲットがSETテーブルとして定義されている場合、システムは統計をコピーしません。これは、ソース テーブルとターゲット テーブルのカーディナリティは同じである必要があるというルールに違反するためです。
ただし、subquery の列が非固有の制約と一緒に定義されている場合、他のすべての適格性要件が満たされていれば、システムは統計をコピーします。
これは、トピックCREATE TABLE AS … WITH DATA AND STATISTICSに関する一般ルールの7番目の箇条書き項目で説明されている全般ルールを再度記述したものです。
- ソース テーブルが副クエリーで指定されている場合、システムはシステム派生列PARTITIONの統計をターゲット テーブルにコピーしません。これは単一列のPARTITION統計と、システム派生PARTITION列を含む列セットの複数列統計のどちらにも当てはまります。
- Subquery のソース関係が複合ビューまたは複合派生テーブルである場合、システムは統計をターゲット テーブル列にコピーしません。
- データの適切なサブセットのみが基本テーブルからコピーされる場合、システムはターゲット テーブルについて定義されている列またはインデックスの統計をコピーしません。これは、ソース テーブルおよびターゲット テーブルのカーディナリティは同じである必要があるというルールに違反するためです。 例えば、以下のうちどれかを指定する場合、システムは一部のデータのみコピーします。
- 結合条件
- DISTINCT演算子
- TOP n演算子
- 集約関数
- OLAP関数
- WHERE句
- GROUP BY句
- HAVING句
- QUALIFY句
- ソース テーブル データがターゲット テーブル定義で変更されている場合、Teradata Databaseはターゲット テーブルに対して定義された列またはインデックスの統計をコピーしません。
同様に、ターゲット テーブルにコピーされるときにソース テーブル インデックス データが変更されている場合、Teradata Databaseは複合インデックスの統計をコピーしません。これは、ターゲット テーブルのデータの変更に関するルールに違反するためです。この例として、すべてのインデックス列がsubquery の式で指定されている場合があります。
例えば、ターゲット テーブル定義でCASE式または算術式を指定する場合、単一列またはインデックスのデータは変更されます。
- 選択リストで指定された列の左から右への順番がソース テーブル列の左から右への順番と異なる場合、システムは複数列統計および複合インデックス統計をコピーしません。これは、統計のインデックスまたは複数列の値がセット内の列のフィールドIDの順に記録されるためです。そのため、基本列の基本的な順序付けが保存されない場合は、値はターゲット テーブルに適用されません。
- 複合インデックスまたは複数列セットの構成要素の列すべてがターゲット テーブルにコピーされない限り、マルチ列統計はコピーされません。
- 単一列もターゲット テーブルにコピーされる場合を除き、システムは単一列および単一列インデックスの統計をソース テーブルからコピーしません。