16.20 - 現在のデータに関する統計の収集 - Teradata Vantage NewSQL Engine

Teradata Vantage™ テンポラル テーブル サポート

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1182-162K-JPN

統計は、一定の間隔で現在のデータに関して収集できます。これはテーブル内のすべてのデータについてのデータを収集するよりも効率的です。特に、新しいデータが読み込まれるときは、グローバル統計が更新され、テーブル全体(現在と過去のデータの両方)の読み取りと集計が必要になる可能性があるため、そのような場合に効率的になります。

グローバル統計は、現在および過去のデータの両方を含む問合わせを最適化するのに役立ちますが、これらの統計の収集は、現在のデータに限定された統計の収集よりも高いデータ変更のしきい値で発生する可能性があります。例えば、変更にデータの10%以上が関係する場合は常に現在のデータの統計を更新できますが、グローバル統計収集のしきい値は20%になる可能性があります。

例: 現在のデータに関する統計の収集

この例では、現在のデータを無効およびクローズしたものと分離するためにパーティション分割された二重テンポラル テーブルで統計情報を収集する方法を示します。

CREATE MULTISET TABLE Policy_BiTemp (
       Policy_ID INTEGER,
       Customer_ID INTEGER,
       Policy_Type CHAR(2) NOT NULL,
       Policy_Details CHAR(40),
       Validity PERIOD(DATE) NOT NULL AS VALIDTIME
       Policy_Duration PERIOD(TIMESTAMP(6) WITH TIME ZONE) NOT NULL
       AS TRANSACTIONTIME
       )
PRIMARY INDEX (Policy_ID)
PARTITION BY CASE_N(
(END(Validity) IS NULL OR
END(Validity) >= CURRENT_DATE -INTERVAL '2' DAY) AND
END(Policy_Duration) >= CURRENT_TIMESTAMP,
END(Validity) < CURRENT_DATE-INTERVAL '2' DAY AND
END(Policy_Duration) >= CURRENT_TIMESTAMP,
END(Policy_Duration) < CURRENT_TIMESTAMP);

CASE_N式によって作成された最初のパーティションは、現在のパーティションです。テーブルのほとんどの問合わせには現在のパーティションが関係するため、統計情報は現在のデータについて収集する必要があります。

COLLECT STATISTICS
            COLUMN Policy_ID
           ,COLUMN Customer_ID
           ,COLUMN Policy_Type
                ON QUERY (SELECT Policy_ID,Customer_ID,Policy_Type
                            FROM Policy_BiTemp
                     WHERE (END(Validity) IS NULL OR
                            END(Validity) >= CURRENT_DATE -
                               INTERVAL '2' DAY)
                        AND END(Policy_Duration) >=
                                         CURRENT_TIMESTAMP
                   ) AS QS_Policy_Bitemp_Currdata;

COLLECT STATISTICSの詳細については、<SQLデータ定義言語>を参照してください。