cypher优化

MATCH (m:`USER`) WHERE id(m) in ["1398986259"] 
OPTIONAL MATCH (m:`USER`)-[r1:CALL_TO]-(x:MOBILE) 
    WHERE r1.first_callmark_on < 20220102 and r1.last_callmark_on > 20190102  
WITH m, x
OPTIONAL  MATCH (x:MOBILE)-[r1:CALL_TO]-(n:`USER`)
    WHERE r1.first_callmark_on < 20220102 and r1.last_callmark_on > 20190102 and id(n)<>"1398986259" 

RETURN count(distinct case when r1 is not NULL then id(n) else NULL end) AS n_user_2nd

请教下,这个语句,如何优化优化一下呢,或者改成go语句,无从下手,辛苦大佬帮我看看

补充下你的 Nebula 版本号,水位报错可以参考 常见问题 FAQ - Nebula Graph Database 手册

帮你格式化了一下查询语句, 比较好读一些,哈~

你是想找两跳的计数,用 GO 和 | 会快很多的

我们最新的代码加入了相关的优化,把边上的 filter 下推到了存储侧。
你可以编译测一下或者等下个版本。

go 语句并不能等价改写,原因是 go 语句无法实现 optional 语义。

2 个赞

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。