以下の例では、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 ? ?