17.10 - 例: 統計のコピー - 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は、subqueryの選択リストで指定された列の相対順序がソース テーブルに定義された相対順序と異なる場合にも、複数列統計またはインデックス統計をコピーします。

PARTITION統計をコピーした場合、ターゲット テーブルにコピーした統計がターゲット テーブルでデータを正確に表示しない場合があります。これは、両方のテーブルで、SHOW TABLEリクエストから返されるテーブル定義が同一でありデータが同じでも、ソース テーブルとターゲット テーブルの間で内部パーティション番号のマッピングが異なるために起こります。

CREATE TABLE AS … WITH DATA AND STATISTICSリクエストで作成したターゲット テーブルと、その統計のコピー元のソース テーブルを内部パーティション番号のレベルまで同一であると想定することはできません。これは、これらの2つのテーブルに対するSHOW TABLEリクエストの出力で定義を比較して、2つのテーブルが同じように見える場合でも同一であるとは限りません。通常、ソース テーブルからPARTITION統計をコピーした場合は、ターゲット テーブルのPARTITION統計を常に再収集する必要があります。

例1: 単一列統計のコピー

この例では、Vantageは列xおよびaの単一列統計を、列aおよびcの単一列統計としてそれぞれコピーします。(a, b)の複数列統計は(b, c)の複数列統計としてコピーされません。ターゲット テーブルの列bおよびcの順序がソース テーブルの列bおよびaの順序と異なるためです。

     CREATE TABLE t2 (a, b, c) AS (SELECT x AS colA, b, a (AS colC)
                                   FROM test) 
     WITH DATA AND STATISTICS;
コピーされる統計 ソース テーブルの列セット ターゲット テーブルの列セット 説明
単一列 x a ソース テーブルtestの列xが、ターゲット テーブルt2の列aに直接マップされます。
単一列 y なし ソース テーブルtestの列yには、ターゲット テーブルt2に相似の列がありません。
単一列NUPI a c ソース テーブルtestの列aが、ターゲット テーブルt2の列cに直接マップされます。
複数列 (x,y,z) なし ソース テーブルtestの列yには、ターゲット テーブルt2に相似の列がありません。
複数列 (a,b) なし ターゲット テーブルt2の列(b,c)の順序が、ソース テーブルtestの列(a,b)の順序と異なります。
複数列NUSI (x,y) なし
  • ソース テーブルtestの列yには、ターゲット テーブルt2に相似の列がありません。
  • NUSIがターゲット テーブルt2に定義されていません。

例2: 相対的な順序での単一列統計のコピー

この例では、k1、y1、およびz1の単一列統計がa、b、およびcの単一列統計としてそれぞれコピーされます。(x1, y1)のインデックス統計は(a, b)のインデックス統計としてコピーされません。これは、ターゲット テーブルt2のaおよびbの順序がソース テーブルtest1のx1およびy1の順序と異なるためです。

     CREATE TABLE t2 (a, b, c) AS (SELECT y1 AS colA, x1 AS colB, 
                                          z1 AS colC)
                                   FROM test1) 
     WITH DATA AND STATISTICS 
     INDEX(a, b);
Vantageによりコピーされる統計 コピー元となるソース テーブルの列セット コピー先となるターゲット テーブルの列セット 理由
単一列 x1 b ソース テーブルtest1の列x1および列y1が、それぞれターゲット テーブルt2の列bおよび列aに直接マップされるため。
y1 a
k1 なし ソース テーブルtest1の列k1に相似する列が、ターゲット テーブルt2に存在しないため。
単一列NUSI z1 c ソース テーブルtest1の列z1が、ターゲット テーブルt2の列cに直接マップされるため。
複数列NUSI なし (a,b) ターゲット テーブルt2の列(a,b)の順序が、ソース テーブルtest1の列(x1,y1)の順序と異なるため。

t2のそれらの列の順序は、列名が維持されていたとすると(y1, x1)になることに注意してください。

複数列NUPI (x1,y1) なし