17.00 - 17.05 - ソース テーブルの列およびインデックス セットの定義にsubquery を使用するAS … WITH DATA AND STATISTICSに関する固有のルール - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)
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の順に記録されるためです。そのため、基本列の基本的な順序付けが保存されない場合は、値はターゲット テーブルに適用されません。
  • 複合インデックスまたは複数列セットの構成要素の列すべてがターゲット テーブルにコピーされない限り、マルチ列統計はコピーされません。
  • 単一列もターゲット テーブルにコピーされる場合を除き、システムは単一列および単一列インデックスの統計をソース テーブルからコピーしません。