如何在 OpenLink Virtuoso 中为所有 SQL 查询设置默认 SQL 选项

问题描述 投票:0回答:1

目前我正在积极利用 Virtuoso 的一项非常有吸引力的功能,使用 SPARQL 定义 SQL 视图。当我在没有任何 Virtuoso 特定选项的复合 SQL 查询中使用这些视图时, 执行时间非常长。因此,每个查询的末尾应包含其他选项,例如

SELECT COUNT(*) from V1 JOIN V2 ON V1.s = V2.d ..... 
option (loop, order)

有没有一种方法可以通过这样的方式配置 Virtuoso,即自动添加选项子句并且 SQL 查询本身不会包含它?

virtuoso
1个回答
0
投票

loop
order
(以及
index
)这样的查询选项是Virtuoso内置SQL优化器的微调提示;因此,它们不能全局设置(因为它们不应该如此)。

某些查询确实可能在这些集合上工作得更好,但这肯定不适用于每个 SQL 查询;事实上,在大多数情况下,它们的使用会产生更糟糕的执行计划。如果你编写一个 SQL 查询,发现 Virtuoso 没有做出最优计划,这时就可以进行这种按需微调。

也就是说,如果任何产生更差执行计划的 SQL 查询通过任何版本的 Virtuoso 的 OpenLink 社区论坛 向我们报告(OpenLink Software 生产 Virtuoso,并雇用了我),那将会非常有帮助。 /或者开源版(a/k/a VOS)的 GitHub 问题,这样我们就可以研究它们,并可能改进或修复查询优化器。

© www.soinside.com 2019 - 2024. All rights reserved.