match语句太慢了,怎样把这条语句转换成go呢?

我的match查询语句:

match p=(nn:player{player_name:"job"})-[r:friend*4..6]->(m:player) 
where all(a in r where  a.period in ["child","youth"])  and ((not (m)-[]->()) or (m.player.phone is not null and (m)-[]->()))                       
RETURN m.player.player_name as end_id , nodes(p) as result limit 2000

因为match语句性能太低,如何转换成go语句呢?
十分感谢您的帮助!!!!!!!!

你上面的语句在nebula graph上能执行?

嗯嗯 是可以执行的,没有错误,但是运行时间很长

请问 您有什么解决方案不?

您这个语句比较复杂,很难用GO表达

如果从一个节点出发,4-5跳,返回路径中的所有节点,并且可以对路径进行条件选择,这个需求应该怎么实现呢,
了解到 GET SUBGRAPH 是可以返回路径中的所有节点的,但是无法添加where语句,请问您有什么建议不?

match 和 go 做的事情是不太一样的,不太好转化。可以看看是不是能把 where 里面的 condition 转化成 pattern 放到 match 里面,可能性能会好一些。

您有相应的例子不?

属性是可以放在 match 语句里面的,参考:

nebula> MATCH (v:player{name:"Tim Duncan"})-[e:follow{degree:95}]->(v2) \
        RETURN e;
+--------------------------------------------------------+
| e                                                      |
+--------------------------------------------------------+
| [:follow "player100"->"player101" @0 {degree: 95}]     |
| [:follow "player100"->"player125" @0 {degree: 95}]     |
+--------------------------------------------------------+

你这语句跑多久啊?我这匹配30多边,有些边 上亿数据量

跑到停不下来,已经换策略了,采用 get subgraph 来获得整个的子图,然后再对获取的数据进行条件筛选。

我是从子图查,转的go ,子图限制多,性能上还没看到优势,也是蛋疼

浙ICP备20010487号