如何解决如果指定更多对象值,sparql会变慢
使用virtuoso 7开源版本,
下面的查询很快,它会立即返回结果,
select *
WHERE {
graph <http://localhost:8890/graph> {
?catAtt qq:catId ?catId;
qq:caDataType ?caDataType;
qq:showInView ?showInview;
qq:valFormat ?valFormatKey;
qq:multiple ?multiple;
qq:position ?position;
qq:link ?link;
qq:catAttName ?catAttName;
qq:setting ?setting;
qq:flag ?flag;
qq:unit ?caUnit.
}
}
LIMIT 20
此查询是如此缓慢,结果花费了10秒钟,唯一的区别是将?catId替换为文字值1
select *
WHERE {
graph <http://localhost:8890/graph> {
?catAtt qq:catId 1;
qq:caDataType ?caDataType;
qq:showInView ?showInview;
qq:valFormat ?valFormatKey;
qq:multiple ?multiple;
qq:position ?position;
qq:link ?link;
qq:catAttName ?catAttName;
qq:setting ?setting;
qq:flag ?flag;
qq:unit ?caUnit.
}
}
LIMIT 20
为什么会这样?我仍然是sparql和Triplestore的新手,似乎我必须对该对象进行一些索引编制?
编辑:
我尝试创建GOPS索引,但我对Partition部分不了解,使用O正确吗?该分区是什么意思?创建此索引可以将第二个查询的执行时间提高到4秒,但对于DBMS来说仍然太慢。
CREATE COLUMN INDEX RDF_QUAD_GOPS
ON RDF_QUAD (G,O,P,S)
PARTITION (O VARCHAR (-1,0hexffff));
解决方法
在OpenLink社区论坛https://community.openlinksw.com/t/sparql-slow-if-more-object-value-specified/2064/2上看到以下针对此问题的回复...在此发布所有其他问题...。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。