|
| 1 | +@Q: |
| 2 | + FOR v,e,p IN <span class="hljs-number">1.</span><span class="hljs-number">.3</span> OUTBOUND <span class="hljs-string">'circles/A'</span> GRAPH <span class="hljs-string">'traversalGraph'</span> |
| 3 | + FILTER p.edges[<span class="hljs-number">0</span>].label == <span class="hljs-string">'right_foo'</span> |
| 4 | + RETURN v._key |
| 5 | + |
| 6 | +@R |
| 7 | +<span style="color:rgb(85,85,255)">Query string:</span> |
| 8 | + <span style="color:rgb(0,187,0)"> FOR v,e,p IN 1..3 OUTBOUND 'circles/A' GRAPH 'traversalGraph' |
| 9 | + FILTER p.edges[0].label == 'right_foo' |
| 10 | + RETURN v._key |
| 11 | + </span> |
| 12 | + |
| 13 | +<span style="color:rgb(85,85,255)">Execution plan:</span> |
| 14 | + <span style="color:rgb(187,0,187)">Id</span> <span style="color:rgb(187,0,187)">NodeType</span> <span style="color:rgb(187,0,187)">Est.</span> <span style="color:rgb(187,0,187)">Comment</span> |
| 15 | + <span style="color:rgb(187,187,0)">1</span> <span style="color:rgb(0,187,187)">SingletonNode</span> <span style="color:rgb(0,187,0)">1</span> * <span style="color:rgb(0,187,187)">ROOT</span> |
| 16 | + <span style="color:rgb(187,187,0)">2</span> <span style="color:rgb(0,187,187)">TraversalNode</span> <span style="color:rgb(0,187,0)">1</span> - <span style="color:rgb(0,187,187)">FOR </span><span style="color:rgb(187,187,0)">v</span> <span style="color:rgb(0,0,187)">/* vertex */</span> <span style="color:rgb(0,187,187)">IN</span> <span style="color:rgb(0,187,0)">1..3</span> <span style="color:rgb(0,0,187)">/* min..maxPathDepth */</span> <span style="color:rgb(0,187,187)">OUTBOUND</span> '<span style="color:rgb(0,187,0)">circles/A</span>' <span style="color:rgb(0,0,187)">/* startnode */</span> <span style="color:rgb(0,187,187)">GRAPH</span> '<span style="color:rgb(0,187,0)">traversalGraph</span>' |
| 17 | + <span style="color:rgb(187,187,0)">5</span> <span style="color:rgb(0,187,187)">CalculationNode</span> <span style="color:rgb(0,187,0)">1</span> - <span style="color:rgb(0,187,187)">LET</span> <span style="color:rgb(187,0,187)">#7</span> = <span style="color:rgb(187,187,0)">v</span>.`<span style="color:rgb(187,187,0)">_key</span>` <span style="color:rgb(0,0,187)">/* attribute expression */</span> |
| 18 | + <span style="color:rgb(187,187,0)">6</span> <span style="color:rgb(0,187,187)">ReturnNode</span> <span style="color:rgb(0,187,0)">1</span> - <span style="color:rgb(0,187,187)">RETURN</span> <span style="color:rgb(187,0,187)">#7</span> |
| 19 | + |
| 20 | +<span style="color:rgb(85,85,255)">Indexes used:</span> |
| 21 | + <span style="color:rgb(187,0,187)">By</span> <span style="color:rgb(187,0,187)">Type</span> <span style="color:rgb(187,0,187)">Collection</span> <span style="color:rgb(187,0,187)">Unique</span> <span style="color:rgb(187,0,187)">Sparse</span> <span style="color:rgb(187,0,187)">Selectivity</span> <span style="color:rgb(187,0,187)">Fields</span> <span style="color:rgb(187,0,187)">Ranges</span> |
| 22 | + <span style="color:rgb(187,187,0)">2</span> <span style="color:rgb(0,187,187)">edge</span> <span style="color:rgb(187,0,0)">edges</span> <span style="color:rgb(0,187,0)">false</span> <span style="color:rgb(0,187,0)">false</span> <span style="color:rgb(0,187,0)">85.00 %</span> [ `<span style="color:rgb(187,187,0)">_from</span>`, `<span style="color:rgb(187,187,0)">_to</span>` ] <span style="color:rgb(0,187,187)">base OUTBOUND</span> |
| 23 | + <span style="color:rgb(187,187,0)">2</span> <span style="color:rgb(0,187,187)">edge</span> <span style="color:rgb(187,0,0)">edges</span> <span style="color:rgb(0,187,0)">false</span> <span style="color:rgb(0,187,0)">false</span> <span style="color:rgb(0,187,0)">85.00 %</span> [ `<span style="color:rgb(187,187,0)">_from</span>`, `<span style="color:rgb(187,187,0)">_to</span>` ] <span style="color:rgb(0,187,187)">level 0 OUTBOUND</span> |
| 24 | + |
| 25 | +<span style="color:rgb(85,85,255)">Traversals on graphs:</span> |
| 26 | + <span style="color:rgb(187,0,187)">Id</span> <span style="color:rgb(187,0,187)">Depth</span> <span style="color:rgb(187,0,187)">Vertex collections</span> <span style="color:rgb(187,0,187)">Edge collections</span> <span style="color:rgb(187,0,187)">Options</span> <span style="color:rgb(187,0,187)">Filter conditions</span> |
| 27 | + 2 1..3 <span style="color:rgb(187,0,0)">circles</span> <span style="color:rgb(187,0,0)">edges</span> <span style="color:rgb(0,187,187)">uniqueVertices</span>: <span style="color:rgb(0,187,0)">none</span>, <span style="color:rgb(0,187,187)">uniqueEdges</span>: <span style="color:rgb(0,187,0)">path</span> (<span style="color:rgb(187,187,0)">p</span>.`<span style="color:rgb(187,187,0)">edges</span>`[<span style="color:rgb(0,187,0)">0</span>].`<span style="color:rgb(187,187,0)">label</span>` == <span style="color:rgb(0,187,0)">"right_foo"</span>) |
| 28 | + |
| 29 | +<span style="color:rgb(85,85,255)">Optimization rules applied:</span> |
| 30 | + <span style="color:rgb(187,0,187)">Id</span> <span style="color:rgb(187,0,187)">RuleName</span> |
| 31 | + <span style="color:rgb(187,187,0)">1</span> <span style="color:rgb(0,187,187)">move-calculations-up</span> |
| 32 | + <span style="color:rgb(187,187,0)">2</span> <span style="color:rgb(0,187,187)">move-filters-up</span> |
| 33 | + <span style="color:rgb(187,187,0)">3</span> <span style="color:rgb(0,187,187)">move-calculations-up-2</span> |
| 34 | + <span style="color:rgb(187,187,0)">4</span> <span style="color:rgb(0,187,187)">move-filters-up-2</span> |
| 35 | + <span style="color:rgb(187,187,0)">5</span> <span style="color:rgb(0,187,187)">optimize-traversals</span> |
| 36 | + <span style="color:rgb(187,187,0)">6</span> <span style="color:rgb(0,187,187)">remove-filter-covered-by-traversal</span> |
| 37 | + <span style="color:rgb(187,187,0)">7</span> <span style="color:rgb(0,187,187)">remove-unnecessary-calculations-2</span> |
| 38 | + <span style="color:rgb(187,187,0)">8</span> <span style="color:rgb(0,187,187)">remove-redundant-path-var</span> |
| 39 | + |
0 commit comments