oracle xmltable performace - 将clob转换为xmltype并提取多个记录

时间:2014-11-14 16:54:37

标签: oracle oracle11g clob xmltype xmltable

我有一个具体问题。我试图从列中的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

0 个答案:

没有答案