Query variable scalability and performance

No it’s a tree which executes parallel at a level and these levels are processed sequential.
So the original query is divided into sub-queries called sub-graphs which have children sub-graphs inside them. This forms a forest of trees in which each node in the tree is a “sub-graph”. Now, query processor tries to run the query for all children of a sub-graph in parallel but these levels are executed recursively hence they are sequential. This parallelisation is achieved using go routines.
Also, filters in a sub-graph are also processed in parallel.
So in your example,

var(func: eq(shortName, $dict)) {
  	  ~dict @filter(eq(dgraph.type, "Meaning")) {
    	    MEANING_UID as uid
  	}
  }

and

var(func: eq(shortName, $dict)) {
  	  ~dict @filter(eq(dgraph.type, "Word")) {
    	    WORD_UID as uid
  	}
  } 

would be parallel and

  meaning @filter(uid(MEANING_UID)) {
      translation @filter(uid(WORD_UID)) {
        content
      }
    }

the 2 filters in this part will be sequential because @filter(uid(WORD_UID)) is in the subgraph of a child of meaning predicate.

2 Likes