微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gremlin:在更便宜的步骤之后调用昂贵的步骤是否可以作为优化?

如何解决Gremlin:在更便宜的步骤之后调用昂贵的步骤是否可以作为优化?

我有一个很大的 gremlin 查询,它基本上是为了过滤结果,由许多 has() 和 where() 步骤组成,可以按任何顺序编写并给出相同的结果,其中一些很昂贵,其中一些更便宜。

如果我先调用更便宜的步骤,我猜会用更少的迭代来执行昂贵的步骤,因为许多顶点被过滤,用任何语言编码时都是如此,但在数据库实现中我不知道 Gremlin步骤按写入的顺序执行。

我知道这种事情通常取决于 Gremlin 数据库的实现,但也许您可以给我一些一般性的答案。此外,我尝试进行一些基准测试,但在我的特定情况下构建好的基准测试太耗时,所以也许您可以帮助我了解数据库在内部是如何实现的。

解决方法

正如您所提到的,它确实取决于查询引擎和优化查询计划的开发方式。一些引擎会尝试根据所测试元素的估计基数对查询的部分重新排序。例如,Amazon Neptune 就是这样工作的。一般来说,最好尽快过滤掉。因此,在社交网络中,除非您确信查询引擎能够对此类查询重新排序,否则您不会希望从 g.V().hasLabel(‘person’) 之类的内容开始。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。