首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >连接两组URI时SparQL查询速度较慢

连接两组URI时SparQL查询速度较慢
EN

Stack Overflow用户
提问于 2019-10-04 16:36:49
回答 1查看 110关注 0票数 1

我正在检查一个在我的系统上运行太慢的SparQL查询。查询非常简单,如下所示:

代码语言:javascript
运行
复制
# The whole query takes ~20 seconds
SELECT ?baseUri_s1 {

    # This takes ~1 second and returns 3000 results
    { SELECT ?baseUri_s1 {
      # Here goes some more complex business logic
      ?baseUri_s1 myOntology:hasProperty1 'myProperty1'
    } }

    # This takes ~0.1 seconds and returns 1 result
    { SELECT ?baseUri_s2 {
      # Here goes some more complex business logic
      ?baseUri_s2 myOntology:hasProperty2 'myProperty2'
    } }

    FILTER (?baseUri_s1 = ?baseUri_s2)
}

因此,如果两个内部选择每个花费不到1秒...连接一个包含3000个URI的列表和另一个包含一个URI的列表需要花费超过18秒的时间吗?我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-10-11 18:56:36

根据SPARQL规范,每个子选择将独立执行。如果第一个子选择返回1'000个结果,第二个子选择返回300个结果,则两个数据集之间的笛卡尔乘积将为300'000。比较300'00可能要慢得多。

为什么不像下面这样简单地执行查询:

代码语言:javascript
运行
复制
# The whole query takes ~20 seconds
SELECT ?baseUri_s1 {

    # Here goes some more complex business logic query 1
    ?baseUri_s myOntology:hasProperty1 'myProperty1'

    # Here goes some more complex business logic query 2
    ?baseUri_s myOntology:hasProperty2 'myProperty2'
}

然后,您将消除没有共享变量的子查询之间令人讨厌的笛卡尔乘积,查询优化器可能会提早推动一些复杂的业务逻辑优化。

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

https://stackoverflow.com/questions/58232733

复制
相关文章

相似问题

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