0

我有一个场景,其中我的 Xpath 是动态生成并放入 XMLTable 函数中的。

我已经在结构化和二进制 XML 存储 DB 环境中使用静态 Xpath 测试了我的 XMLTable 查询,并且在我不做任何索引时都提供了良好的性能。

现在我想进一步提高我在这两种环境中的性能,并想构建结构化 XMLIndex。我在 XDB 开发人员指南中读到,结构化 XMLIndex 只有在您事先知道 Xpath 将是什么并且它不会改变时才会有用。有人可以提供更多信息,就好像可以在 Xpath 动态变化的结构化/二进制 XML 环境中使用结构化 XMLIndex 一样。任何这样的例子对我来说都非常有帮助,因为我在 XDB 开发者指南上找不到任何这样的例子。

谢谢。

4

1 回答 1

0

根据 Oracle 11.2 文档,动态生成的 XPath 应该没问题:

您不需要事先了解可能在查询中使用的 XPath 表达式。XMLIndex 索引的非结构化组件可以是完全通用的。

我想这也很有用:

如果您事先了解要在查询中使用的 XPath 表达式,那么您可以通过使用结构化 XMLIndex 组件来提高性能,该组件以经常查询的固定、结构化数据孤岛为目标。

来源:http ://docs.oracle.com/cd/E11882_01/appdev.112/e23094/xdb_indexing.htm#CHDDCBJD

请注意,您可以同时拥有结构化和非结构化组件。

从总体上阅读文档,我的理解是了解 XML 数据的结构以及可能的 XPath 路由更有利。

如果 XPath 每次都完全不同,那么索引可能不会对您有太大帮助。如果动态位实际上并没有太大不同,那么您应该会看到一些性能优势。

于 2013-09-14T17:55:42.013 回答