sparql - 如果指定了更多对象值,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 ...在那里发布所有进一步的问题。 ...
推荐阅读
- python - 如何从 flask-SQLAlchemy 查询 SQL 视图
- javascript - Finnesing fullcallendar; 列表视图序数
- r - 尝试连接到 R 上的 mongodb 时找不到合适的服务器
- r - 如何计算两列之间的时间差?
- python - 如何在 PySimpleGUI 中一次将多个窗口全屏显示
- javascript - 多个可选捕获组的正则表达式模式
- spring-cloud-stream - Spring Cloud Stream中如何添加或调整文件供应商的配置
- python - 从标准数组中删除选定的值 - mongodb + python
- jbpm - 具有正确所有者的 JBPM 7.44 任务返回“无当前匹配”
- python - SQL Server rowversion 数据类型的 Python 字节到字符串