代码之家  ›  专栏  ›  技术社区  ›  Varun Tahin

在小精灵Tinkerpop3中解释计划(DSE图)

  •  2
  • Varun Tahin  · 技术社区  · 7 年前

    我写了一个查询,它花费的时间比预期的要长。

    g.V().hasLabel('Person').has('name','Person1').out('BELONGS').in('HAS').dedup().as('x').in('HAS').filter(__.in('HAS').has('name','App1')).store('y').select('x').dedup().in('HAS').hasLabel('Org').repeat(out()).until(outE().hasLabel('IS')).store('a').cap('y').unfold().in('HAS').hasLabel('Class').repeat(inE('IS').dedup().otherV()).until(inE('HAS')).where(within('a'))
    

    我们可以做一个解释计划,看看是什么让这个查询变慢了吗?

    当做

    瓦伦·塔欣

    1 回复  |  直到 7 年前
        1
  •  9
  •   stephen mallette    7 年前

    在拆分小精灵遍历时,您可以使用多种工具。您可以使用 explain() 步骤和/或 profile() 步这个 explain() 步骤将显示遍历是如何通过优化其执行的遍历策略来组合和修改的。这个 profile() step将提供遍历执行本身的统计信息。

    我也会称小精灵控制台本身为“工具”。调试Gremlin有时会让我走上一条执行较小的遍历块的道路,这样我就可以确定它在步骤列表中的任何给定点返回什么。小精灵控制台,因为它是 REPL ,提供了立即获得代码执行反馈的能力,从而使您摆脱IDE较长的开发周期。