我有一个具体问题。我试图从列中的xml clob字段中检索值。这个xml非常大,我拥有超过4万条有xml_clob的记录。我目前能够使用显示的查询检索信息,但发现性能是一个大问题。目前,处理查询需要数小时。我需要能够在几分钟内减少这个查询处理时间。没有提供xml_schema。访问服务器非常有限,所以我可以创建临时表。但这并没有多大帮助。这些跟随查询仅显示"性别"。至少需要15分钟。
xml的例子
<root>
<entry>....</entry>
<entry effective="2010012108354553" timestamp="2010012108354553" id="12345">
<field name="Org" t="0" s="4" d="0">
<nv>0000</nv>
</field>
<field name="FirstName" t="1" s="13" d="0">
<nv>John</nv>
</field>
<field name="LastName" t="1" s="13" d="0">
<nv>Doe</nv>
</field>
<entry>
</root>
查询:
SELECT X.*,X2.*
From XML_TABLE XM,
XMLTABLE (
'for $e in /entry
where $e/@type = "create"
and $e/@effective > 20110229
and $e/@effective < 20140229
return $e'
passing extract(xml, '/root/entry')
COLUMNS
effective VARCHAR(60) PATH '/entry/@effective'
) AS X ,
XMLTABLE (
'for $i in /field
where $i/@name = "Gender"
return $i'
passing X.xml
COLUMNS
name VARCHAR(60) PATH '/field/@name',
old_value VARCHAR(60) PATH '/field/ov',
new_value VARCHAR(60) PATH '/field/nv'
) AS X2