indexing - 什么索引可以加快 X-Hive/Documentum xDB 中的 XQuery?

标签 indexing performance xquery

我的测试数据库中有大约 2500 个文档并搜索 xpath /path/to/@attribute大约需要 2.4 秒。做 distinct-values(/path/to/@attribute)需要 3.0 秒。

我已经能够加快查询 /path/to[@attribute='value']通过在 /path/to[@attribute<STRING>] 上添加路径值索引,将时间缩短到数百或数十毫秒但我能想到的没有索引被用于更一般的查询。

有人知道我应该使用什么索引吗?

最佳答案

您建议的索引是正确的 (/path/to[@attribute]),但不幸的是,xDB 优化器目前无法识别这种特定情况,因为存储在索引中的“目标节点”始终是元素而不是属性.如果/path/to/@attribute 的结果很少,那么您可以通过将查询稍微修改为:distinct-values(/path/to[@attribute]/@attribute) 来优化它。通过这个查询,优化器识别出它可以使用一个索引来访问 'to' 元素,但它仍然可以访问目标文档以检索 @attribute 步骤的属性。这正是为什么它只会在点击次数很少的情况下受益:每次点击都可能访问不同的数据页面。

您还可以通过 API 直接访问索引中的键:XhiveIndexIf.getKeys()。这将非常快,但显然这不是非常用户友好(并且应该由优化器完成)。

显然优化器可以处理这个问题。我会将其添加到错误跟踪器中。

关于indexing - 什么索引可以加快 X-Hive/Documentum xDB 中的 XQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196950/

相关文章:

MongoDB 多个索引与子文档数组上的单个索引?

excel - 如何索引/匹配以从依赖数组中提取数据

xml - BaseX 8.2 中带有元素节点测试的 XQuery 文档节点测试会在根元素之前出现注释时抛出异常。为什么?

java - 性能问题 - 在 java 的 unix box 中写入巨大的 csv 文件时花费太多时间,与 MYSQL DB 交互以对每条记录进行交叉检查

floating-point - 现代芯片上的 float 与整数运算性能

sql - 使用 SQL + XQuery 将 Xml 转换为基于列的数据

sql - T-SQL 更新架构中的 XPath

python - 如何仅将函数应用于某些数组元素?

python - 从一维 numpy 数组中有效地切片窗口,围绕第二个二维数组给出的索引

c# - 在 C# 中对小代码示例进行基准测试,可以改进此实现吗?