WITH - Teradata Database - Teradata Vantage NewSQL Engine - WITHオプション、BEGIN QUERY CAPTURE SQL文。

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage
VERBOSE
詳細なEXPLAINテキストをキャプチャします。
STATSUSAGE
最適化ルーチンの使用統計と推奨情報をキャプチャします。
DETAILED
最適化ルーチンの統計の使用と推奨情報をキャプチャすることに加え、要求の問合わせ計画で参照されるすべてのデータベース オブジェクトについて、要約統計の詳細項目をキャプチャします。DETAILEDを指定すると、要求では問合わせ計画で参照されるすべてのデータベース オブジェクトについて、次の統計の詳細項目をキャプチャします。
  • StatTimeStamp
  • Version
  • OrigVersion
  • NumColumns
  • NumBValues
  • NumEHIntervals
  • NumHistoryRecords
  • NumNulls
  • NumAllNulls
  • NumAmps
  • NumPNullDistinctVals
  • PNullHighModeFreq
  • AvgAmpRPV
  • HighModeFreq
  • NumDistinctVals
  • NumRows
  • CPUUsage
  • IOUsage

例: デフォルトのTDQCDデータベースを使用したXML形式での問合わせ計画のキャプチャと格納

このリクエストでは、サポートされているすべてのオプションを指定して、問合わせ計画データの格納にデフォルトのTDQCDデータベースを使用します。

     BEGIN QUERY CAPTURE AS workload wl_2;
     SELECT *
     FROM employee
     WHERE emp_code > 2;

END QUERY CAPTUREリクエストにより、BEGIN QUERY CAPTUREモードを終了します。

     END QUERY CAPTURE;

例: BEGIN QUERY CAPTUREを使用したXML形式でのDMLとDDLの混合リクエストのキャプチャ

employeeデータベースに、次のuser_1テーブルを作成しておきます。

     CREATE TABLE user_1.employee (
       emp_code  INTEGER,
       emp_name  VARCHAR(30),
       dept_code INTEGER,
       salary    FLOAT);

employeeに100万行が投入されているとして、次のリクエストを使用してdept_code列の統計を収集するとします。

     COLLECT STATS COLUMN (dept_code) ON employee;

次のBEGIN QUERY CAPTUREリクエストでは、VERBOSEオプションとDETAILED STATSUSAGEオプションを指定して、user_1_QCDクエリー キャプチャ データベースに問合わせ計画データをキャプチャします。

     BEGIN QUERY CAPTURE
     WITH VERBOSE, DETAILED STATSUSAGE
     INTO user_1_QCD
     AS WORKLOAD wl_1;

このBEGIN QUERY CAPTUREリクエストは、Object、SQL、Step Details、Verbose EXPLAINテキスト、統計の詳細項目、および使用した統計についての情報と後続のすべてのリクエストに対する統計の推奨情報をキャプチャします。

     SELECT *
     FROM employee
     WHERE emp_code > 2;
     DELETE FROM employee
     WHERE emp_code = 10;
     UPDATE employee
     SET dept_code = 11
     WHERE emp_code = 11;
     CREATE TABLE dept (
       dept_code INTEGER,
       dept_name VARCHAR(30),
       manager   VARCHAR(30));
     INSERT DEPT(11, 'HR', 'JOHN');

END QUERY CAPTUREリクエストにより、BEGIN QUERY CAPTUREモードを終了します。

     END QUERY CAPTURE;    /* ends the BEGIN QUERY CAPTURE mode */

次のSELECTリクエストは、QUERY CAPTUREセッションでキャプチャしたすべてのリクエストの問合わせIDを返します。

     SELECT DISTINCT ID
     FROM user_1_QCD.Xmlqcd
     WHERE WorkLoadName = 'wl_1';