17.00 - 17.05 - XMLPLANオプションによって生成されたXML文書の処理の例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLリクエストおよびトランザクション処理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
ユーザー ガイド
Publication ID
B035-1142-170K-JPN
Language
日本語 (日本)

以下の例では、XMLデータ型関数およびメソッドを使用して、BEGIN QUERY LOGGINGやREPLACE QUERY LOGGINGのXMLPLANオプションによって生成されたXML文書からの情報を抽出する方法を示します。

詳細については、<Teradata XML>を参照してください。

また、INSERT EXPLAIN文とIN XMLオプション、またはBEGIN QUERY CAPTUREを使用してXML計画文書を作成し、そこから情報を抽出することもできます。

XMLEXTRACTを使用したXML計画からの情報の抽出

この例では、XMLEXTRACTメソッドを使用して、XML計画から問合わせ実行計画情報を抽出します。IPEEligibility属性は、計画が増分計画および実行最適化に適格かどうかを示します。この場合、問合わせが返すIPEEligibility値はリクエストが適格でないことを示します。

select
    createxml(xmltextinfo).xmlextract(
    '//Plan/@IPEEligibility',
    'default=http://schemas.teradata.com/queryplan') as IPEEligibility
from
    dbc.qrylogv l,
    dbc.qrylogxmlv x
where
    l.queryid = x.queryid and
    l.statementtype = 'Select';
 *** Query completed. One row found. One column returned.
 *** Total elapsed time was 1 second.
IPEEligibility
-----------------------------------------------------------------------
 IPEEligibility="NotEligible"

XMLTABLEを使用したステップ詳細の抽出

この例では、XMLTABLEテーブル関数を使用して、結合情報を含むステップ詳細をXML文書から抽出する方法を示します。

select
     steplev1num,
     stepname,
     jointype,
     joinkind
from (
select
     l.queryid,
     createxml(xmltextinfo) as plan
from
     dbc.qrylogv l,
     dbc.qrylogxmlv x1
where
     l.queryid = x1.queryid and
     l.statementtype = 'Select') as x2,
     xmltable(
     xmlnamespaces(default 'http://schemas.teradata.com/queryplan'),
     '//PlanStep' passing by value x2.plan
     columns
          "QueryID" decimal(18,0) path '../../@QueryID',
          "StepLev1Num" integer path './@StepLev1Num',
          "StepName" char(4) path './@StepName',
          "JoinType" char(10) path './StepDetails/JIN/@JoinType',
          "JoinKind" char(10) path './StepDetails/JIN/@JoinKind')
     as t (
          "QueryID",
          "StepLev1Num",
          "StepName",
          "JoinType",
          "JoinKind")
where x2.queryid = t.queryid
order by t.queryid, steplev1num;
*** Query completed. 6 rows found. 4 columns returned.
 *** Total elapsed time was 1 second.
StepLev1Num  StepName  JoinType    JoinKind
-----------  --------  ----------  ----------
          1  MLK       ?           ?
          2  MLK       ?           ?
          3  MLK       ?           ?
          4  RET       ?           ?
          5  JIN       Inner       Merge Join
          6  Edt       ?           ?