繁体   English   中英

如何通过控制查询执行顺序使Virtuoso上的SPARQL查询更快?

[英]How to make SPARQL queries faster on Virtuoso by controlling query execution order?

我已经设置了一个Virtuoso服务器来托管Freebase数据( 版本07.20.3217,于2017年1月5日构建 ;非常感谢您可以尝试一下 )。

让我们考虑一下这种情况:查找威斯康星州州( fb:m.0824r )中最大的位置(可能是一个县,用?var1表示),其中?var1包含至少一个位置(用?var2表示),类型为fb:place_with_neighborhoods

我编写了SPARQL查询,如下所示:

PREFIX fb: <http://rdf.freebase.com/ns/> 
SELECT DISTINCT ?var1 ?var2 ?v2_name WHERE {
             fb:m.0824r  fb:location.location.contains  ?var1 . 
             ?var1       fb:location.location.contains  ?var2 . 
             ?var2       fb:type.object.type            fb:location.place_with_neighborhoods . 
             ?var1       fb:location.location.area      ?area .
  OPTIONAL { ?var2       fb:type.object.name            ?v2_name } .
} ORDER BY DESC(?area) 
LIMIT 1

不幸的是,Virtuoso引擎无法返回查询结果超过一个小时。

我尝试了一些更简单的查询,这些查询可能会在不到一秒钟的时间内产生结果:

PREFIX fb: <http://rdf.freebase.com/ns/> 
SELECT DISTINCT ?var1 ?var2 ?v2_name WHERE {
             fb:m.0824r  fb:location.location.contains  ?var1 . 
             ?var1       fb:location.location.contains  ?var2 . 
             ?var2       fb:type.object.type            fb:location.place_with_neighborhoods . 
  OPTIONAL { ?var2       fb:type.object.name            ?v2_name } .    
}
# Remove the area-related information with ?var1
# Returns ONLY ONE result in 0.05s.

和,

PREFIX fb: <http://rdf.freebase.com/ns/> 
SELECT DISTINCT ?var1 ?var2 ?v2_name ?area WHERE {
             fb:m.0824r  fb:location.location.contains  ?var1 . 
             ?var1       fb:location.location.contains  ?var2 . 
             ?var1       fb:location.location.area      ?area .
  OPTIONAL { ?var2       fb:type.object.name            ?v2_name } .
}
# Remove the type limitation of ?var2
# Returns ~7000 results in ~1s.

鉴于这些简单查询的结果,我真的很困惑哪一步带来了性能问题。 有谁可以给​​我一些建议吗? 非常感谢!

正如您在项目中提出问题所指出的那样-

当查询的其余部分没有解决方案时, OPTIONAL似乎存在查询计划问题,因为仅从初始查询中删除该子句会使结果立即接近

删除?var1 fb:location.location.area ?area模式(以及因此将ORDER BY DESC(?area)减少)的模式,这将使即时结果近似

Development会提出此问题进行分析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM