首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >cts:元素查询与cts:路径范围查询性能

cts:元素查询与cts:路径范围查询性能
EN

Stack Overflow用户
提问于 2020-02-03 11:03:23
回答 1查看 257关注 0票数 4

我们正在开发一个存储大量数据的企业应用程序。在我们的应用程序中,我们强迫用户创建多路径范围索引,以加快搜索速度。

早些时候,我们利用路径范围索引使搜索速度更快,使用cts:path-range-query(),但现在我发现,同样的结果,我可以使用cts:element-query(),而无需创建路径范围索引。

例如-

我需要为/tXML/Message//ASNId创建路径范围索引

xquery version "1.0-ml"; cts:uris('', (), cts:and-query((cts:collection-query("integration"), cts:path-range-query("/tXML/Message/INVENTORY/ASNId", "=", "10121600"))))

  • Using cts:element-query() ->这里我不需要创建路径范围索引。

xquery version "1.0-ml"; cts:uris('', (), cts:and-query((cts:collection-query("integration"), cts:element-query(xs:QName("tXML"),cts:element-query(xs:QName("Message"), cts:element-query(xs:QName("INVENTORY"), cts:element-value-query(xs:QName("ASNId"), "10121600")))))))

我的问题是,

如果使用cts:-

  1. ()获得与cts: Path - Range -query()相同的结果,那么为什么需要强制用户创建路径范围索引?适用于大型数据集?.(cts:element-query()cts:path-range-query())

请帮我找出这两个问题的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-03 11:23:48

答案并不完全是直截了当的,这意味着结果可能会因数据和体积的不同而有所不同。

不过,有几个注意事项:

  • 您的查询在语义上是不一样的。元素-查询检查祖先,而在路径中,您可以更严格地要求特定的父级,因此直接父-子(而不是祖先-后代) relations
  • Range查询是针对带有预定义排序规则的范围索引来解析的,并且总是针对整个(“确切”)值进行解析。但是,值查询是根据通用索引解析的。更具体地说,使用无词干标记对索引。如果您的值由多个标记组成,则需要启用位置或筛选搜索以确保准确性。但是,您的示例中的值只包含一个令牌,
  • 路径范围索引是在消耗时间(略大于元素范围索引)的情况下产生的。范围索引也需要额外的内存。元素查询和元素值查询需要更多的工作来解决搜索时的问题。虽然,您可能需要一个大的测试集来注意到重要的differences.
  • Last,但同样重要的是,您不能在没有范围索引的情况下执行不平等查询,也不能对方面等进行值查找。

哈哈!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60037907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档