批量查询存储在 oracle 数据库 table 中 xmltype 列中的大型 xml 的最快方法是什么?

What is the fastest way to query in batches a large xml stored in xmltype column in oracle database table?

我有 Oracle xmldb,其中 table 包含一个 xml 类型的列,该列有多个大 xml 的记录。每个 xml 的大小约为 100MB,其中 xml 的一部分具有重复元素。 每个 xml 中的重复元素可能有几千个。 我只需要阅读重复的元素。 批量读取元素集合中的重复元素的最佳方法是什么?假设批量大小可以是一次 50 个重复元素。 我已经使用 DBMS_XMLGEN 编写代码来高效地批量写入 xml,但无法找到一种方法来进行类似的批量读取。 请提出一个有效的方法。

我已经想出几种方法来使用一个 sql 查询来完成此操作。

方法一:

在 sql 查询中: 1. 创建一个 xmltable,其中有一列用于重复 xml 元素。 2. Select 具有每个重复元素的列

select elements.* from xmltable('//*/parent[@name="E1"].*' passing xml columns repeating_element xmltype path '/repeatingElement') elements;

方法二:

使用 table() 运算符: 查询看起来像这样: select elements.* from table(xmlsequence(extract(xml, '//*/parent[@name="E1"]/repeatingElement'))) elements;

使用上述任一查询,在此sql查询上打开一个带limit子句的游标,批量查询记录。