match 查询语句优化

match(m:A)–(n:B) return m,n limit 10,目前该limit无效,相当全局扫描,想请教一下各位如何能进行优化实现有效的下推

可以读读这篇稿子。

如我们私下讨论的

这个不能下推是逻辑上,无论从 A 还是 B tag 开始扫,都不敢断言 sample limit 部分数据能保证拓展之后总量能达到 10 的数量,所以只能全扫描,所以这里不下推并不是没实现,而是做不到。

然而,如果我们使用者知道图数据库自己不知道的信息,比如”对于 limit 10 的查询,A如果扫100个肯定能保证了“,我们就可以选择从 A limit 100 然后再拓展出去一跳,看对端是不是 B,如果是 B 则返回总量 limit 10。

那么如何让数据库从 A 开始扫 100 个再拓展呢?要么是写 multi MATCH ,要么是利用非 cypher 的 nGQL

对于非 cypher 的 ngql 就是:

lookup on A yield id(vertex) as vid | limit 100 | GO FROM $-.vid OVER * bidirectly …

具体参考文档。

2 个赞

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