1

我有一个具体问题。我正在尝试从列中的 xml clob 字段中检索值。这个 xml 非常大,我有超过 40,000 条记录有这个 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
4

0 回答 0