You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j中特定Pull节点的LIKE关系计数优化方案问询

优化Neo4j中点赞关系的高效计数查询

我的数据模型为(:User)-[:LIKE]->(:Pull),需要统计特定Pull节点(id为"pull4")的LIKE关系数量。目前使用的查询如下:

PROFILE
MATCH res=(:Pull {id:"pull4"})<-[:LIKE]-()
return  size(collect(relationships((res)))) as res 

该查询会先展开所有LIKE关系再进行计数,当目标Pull节点拥有数百万个点赞时,查询开销极高。想请教有没有能利用Neo4j计数存储的更优查询方案?


已失效的旧版查询

以下两种写法在新版Neo4j中不再生效:

MATCH (p:Pull {id:"pull4"})
RETURN size(  (p)<-[:LIKE]-() )
MATCH (p:Pull {id:"pull4"})
RETURN length(  (p)<-[:LIKE]-() )

最优高效查询方案

在新版Neo4j中,推荐使用以下两种无需遍历所有关系的高效计数方式,直接利用Neo4j维护的统计存储:

  1. 计数模式(Count Pattern)
    通过模式计数语法直接获取关系数量,性能优异:
MATCH (p:Pull {id:"pull4"})
RETURN count{(p)<-[:LIKE]-()} AS likeCount
  1. 原生入度函数
    使用db.node.degree.in函数直接读取节点指定类型的入度统计,时间复杂度为O(1),是性能最优的方案:
MATCH (p:Pull {id:"pull4"})
RETURN db.node.degree.in(p, 'LIKE') AS likeCount

这两种方案都不会展开所有LIKE关系,避免了百万级数据下的高IO和内存开销,能大幅提升查询效率。


内容的提问来源于stack exchange,提问作者moneeb Shammout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:05:38