已知深度和边查询效率

Known depth and edges query efficency

我的数据是这样的:

a ---> b ---> c

a、b、c为顶点,a只有一个,b-s、c-s有多个(树形结构)。

我的 a ---> b 边是一个 class(我们称它为 ab class),而 b ---> c 边是另一个(bc class).

我需要一个查询,给定 a 的名称,生成 x 个 c-s。

到目前为止,我发现这行得通:

select expand(set(out("ab").out("bc"))) from a where name='aName' limit x

问题:

  1. 可以改进这个查询吗?
  2. 如何只select,例如c-s的名称,而不是整个记录?

感谢您的帮助!

我相信只有在 A.name 属性 上定义 index 才能改进查询。

关于你的第二个问题:

create class A extends V
create class B extends V
create class C extends V    

create class AB extends E
create class BC extends E

create vertex A set name = 'aName'
create vertex B set name = 'bName0'
create vertex B set name = 'bName1'
create vertex C set name = 'cName0'
create vertex C set name = 'cName1'
create vertex C set name = 'cName2'
create vertex C set name = 'cName3'    

create edge AB from (select from A where name = 'aName') to (select from B where name = 'bName0')
create edge AB from (select from A where name = 'aName') to (select from B where name = 'bName1')
create edge BC from (select from B where name = 'bName0') to (select from C where name = 'cName0')
create edge BC from (select from B where name = 'bName0') to (select from C where name = 'cName2')
create edge BC from (select from B where name = 'bName1') to (select from C where name = 'cName1')
create edge BC from (select from B where name = 'bName1') to (select from C where name = 'cName3')

这些查询可能对您有所帮助:

select from (select expand(out("AB").out("BC").include('name')) from A where name = 'aName') limit 3
// or
select name from (select expand(out("AB").out("BC")) from A where name = 'aName') limit 3