记录Neo4j的limit踩坑

本文探讨了在Neo4j中使用limit关键字对层级查询性能的影响,发现limit并非针对节点或关系,而是影响返回数据集的分页,案例揭示了查询深度和结果数量的关系,并提供了解决初次使用者疑问的实践建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近完成了一个项目使用了Neo4j做节点及关系相关图谱功能,在这里记录一下里面使用limit的问题。

需求是这样的,使用neo4j做向下的层级查询,当前节点为中心节点,向下查询2级、3级、4级这样的需求。但是发现当查询4层的时候,比查询3层响应的节点及关系要少。因初次使用neo4j,不知道具体原因,在网上找了很多,没有找到具体原因,只有把cql打印出来。


MATCH p=(n:`39` {id: '测试'})-[:`30`|:`31`|:`89`|:`90`|:`91`*0..4]-(m)
WHERE  any(x in labels(m) WHERE x in ["29","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80"]) 
RETURN DISTINCT p
SKIP 0
limit 1000

自己手动一个个条件去掉执行,发现问题,出在limit 1000。这里的limit不是针对节点也不是针对关系。而是针对响应查询出来的数据集进行分页。例如分页8如下响应

MATCH p=(n:`29` {id: "测试"})-[:`30`|:`31`|:`89`|:`90`|:`91`*0..2]-(m)
WHERE  any(x in labels(m) WHERE x in ["29","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80"]) 
RETURN DISTINCT p
SKIP 0
limit 8

 

 

 执行分页条2条

 

 希望能给和我一样初次使用的人一些帮助。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值