使用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索引,我不理解分区部分,使用O正确吗?这个分区是什么意思?创建这个索引可以将第二个查询的执行时间提高到4秒,但是对于DBMS来说仍然太慢了。
CREATE COLUMN INDEX RDF_QUAD_GOPS
ON RDF_QUAD (G, O, P, S)
PARTITION (O VARCHAR (-1, 0hexffff));发布于 2020-10-26 21:28:39
请在OpenLink社区论坛https://community.openlinksw.com/t/sparql-slow-if-more-object-value-specified/2064/2上查看对此问题的以下回复...在那里发布所有进一步的问题...
https://stackoverflow.com/questions/64527529
复制相似问题