Java Oracle xpath的性能:两种选择方案
我使用的是Oracle11g,有一个XMLType表。此表中有许多记录,每个XML包含0到n个答案的列表,如下所示:Java Oracle xpath的性能:两种选择方案,java,performance,oracle,xpath,xstream,Java,Performance,Oracle,Xpath,Xstream,我使用的是Oracle11g,有一个XMLType表。此表中有许多记录,每个XML包含0到n个答案的列表,如下所示: <section> <answer id="100"> <value>Something</value> </answer> ... </section> 返回 <answer id="100"> <value>Something</value>
<section>
<answer id="100">
<value>Something</value>
</answer>
...
</section>
返回
<answer id="100">
<value>Something</value>
</answer>
Something
返回
<answer id="100">
<value>Something</value>
</answer>
Something
为一个复杂的查询提取许多text()值的性能受到了影响,这让我提出了以下问题。如果我使用像xstream这样的库在java中解析这些值,我会获得更好的性能吗(示例1),还是让oracle为我解析这些值更好(示例2)
在我花时间重写许多DAO和查询之前,我正在尝试从其他人的经验或一些白皮书中学习,所以非常感谢您所做的一切,谢谢
=========================编辑
开始研究使用Scala作为JVM中解析xml的替代方法。您可以随意添加Scala示例。我认为示例2应该更快。
如果您需要更高的速度,我建议对此表进行规范化,并摆脱XML或使用物化视图。我终于开始进行测试,下面是我的发现 对于使用表的简单“报告”jsp视图,我运行了一个查询来填充850行 根据我的代码库,我首先运行查询,如下所示:
<section>
<answer id="100">
<value>Something</value>
</answer>
...
</section>
- 对于每条记录,查询在XMLTypes上包含3个左连接
- 每个记录提取了15个“示例2”值
- 每个值都不需要XStream处理
- 对于每条记录,查询在XMLTypes上包含3个左连接
- 每个记录提取了15个“示例1”值
- 每个值还运行XStream处理以提取值
这当然是我的代码库,但我认为我可以排除使用XStream作为效率的一种手段。但从一开始,XMLType和xpathing似乎不是很有效。您可能需要研究XMLType索引: