17.10 - 例: PARTITION統計のコピー - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)

Vantageは、以下のシナリオでPARTITION統計をコピーします。

PARTITION統計をコピーした場合に、ソース テーブルとターゲット テーブルの間で内部パーティション番号の対応関係が食い違っていると、ターゲット テーブルにコピーした統計が、ターゲット テーブルのデータに正確に対応しなくなる可能性があります。両方のテーブルにおいて、SHOW TABLEリクエストから返される テーブル定義が相似でデータが同じ場合でも、そのような可能性があります。

CREATE TABLE AS … WITH DATA AND STATISTICSリクエストを使用して作成されたターゲット テーブルが統計のコピー元のソース テーブルと内部パーティション番号のレベルまで同一になるように保証する方法は存在しないことを理解するのはとても重要なことです。また、それらのテーブルに対するSHOW TABLEリクエストの出力を使用して定義を比較した結果、2つのテーブルが同じように見えたとしても、このことが当てはまることを理解しておくことも重要です。

通則として、ソース テーブルからPARTITION統計をコピーするときは、常にターゲット テーブルで再収集する必要があります。

このセットの例のこのDDL定義を考えてみましょう。

    CREATE SET TABLE test3, 
    NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL,
    CHECKSUM = DEFAULT (
      a INTEGER,
      b DATE,
      c INTEGER,
      e INTEGER)
    PRIMARY INDEX (c)
    PARTITION BY RANGE_N (e BETWEEN 1 AND 1000000 EACH 50000);

以下の例は、以下の統計がtest3で収集されていると仮定しています。

統計 テーブルtest3の列セット
単一列
  • a
  • b
PPI NUPIの単一列インデックス c
単一列PARTITION PARTITION
複合NUPI (a, c)
複合PARTITION (PARTITION, a)

例1

この例の場合、Vantageは、すべての単一列、複数列、とインデックス統計および単一列PARTITION統計と複数列PARTITION統計を、列セット(PARTITION, a)にコピーします。

    CREATE TABLE t8 AS 
    test3 
    WITH DATA AND STATISTICS;
Vantageによりコピーされる統計 コピー元となるソース テーブルの列セット コピー先となるターゲット テーブルの列セット 理由
単一列 a a システムは、ソース テーブルtest3のすべての列を、subqueryを使用せずに同じ列名とプロパティでターゲット テーブルt8にコピーするため。
b b
PPI NUPIの単一列インデックス c c
単一列PARTITION PARTITION PARTITION
複合NUPI (a, c) (a, c)
複合PARTITION (PARTITION, a) (PARTITION, a)

例2

この例の場合、Vantageは、PARTITION統計をコピーしません。これは、ターゲット テーブル列がsubqueryに指定されているものの、システムが単一列および複数列統計をtest3からt8にコピーするためです。

    CREATE TABLE t8 AS (SELECT *
                        FROM test3) 
    WITH DATA AND STATISTICS;
Vantageによりコピーされる統計 コピー元となるソース テーブルの列セット コピー先となるターゲット テーブルの列セット 理由
単一列 a a ソース テーブルtest3の列と、ターゲット テーブルt8の列は同じであることから、システムがそれらの単一列統計をコピーするため。
b b
PPI NUPIの単一列インデックス c c
複合NUPI (a, c) (a, c) ソース テーブルtest3の列と、ターゲット テーブルt8の列は同じであることから、システムがそれらの複数列統計をコピーするため。
単一列PARTITION PARTITION なし システムは、subqueryでターゲット テーブルの列が指定されていない場合に、単一列または複合の部分としてもPARTITION統計をコピーしないため。
複合PARTITION (PARTITION, a) なし

例3

この例では、VantageはPARTITION統計をコピーしません。これは、ターゲット テーブルのどのインデックス定義も明示的に指定されている場合、インデックスとパーティションがターゲット テーブルにコピーされないためです。ただし、システムはtest3のすべての単一列統計および複数列統計をt8にコピーします。

    CREATE TABLE t8 AS test3
    WITH DATA AND STATISTICS 
    INDEX(a, c);
Vantageによりコピーされる統計 コピー元となるソース テーブルの列セット コピー先となるターゲット テーブルの列セット 理由
単一列 a a ソース テーブルtest3の列と、ターゲット テーブルt8の列は同じであることから、システムがそれらの単一列統計をコピーするため。
b b
PPI NUPIの単一列インデックス c c
複合NUPI (a, c) (a, c) ソース テーブルtest3の列と、ターゲット テーブルt8の列は同じであることから、システムがそれらの複数列統計をコピーするため。
単一列PARTITION PARTITION なし システムは、ターゲット テーブルに明示的にインデックスが定義されていない場合に、インデックスまたはPARTITION統計をコピーしないため。
複合PARTITION (PARTITION, a) なし