【Neo4j查询优化系列】如何快速统计节点的关系数
2023-09-27 14:24:45 时间
在图数据库中我们经常需要统计节点上的关系数目。一种常见的查询写法是这样的:
MATCH (n:Person {name:‘Keanu Reeves’})-[]-() RETURN count(*);
上面的查询会返回代表基诺-李维斯的节点(节点标签为Person)上所有关系的总数,包括进入的和流出的关系。如果用PROFILE来看一下查询的执行步骤和成本,结果如下:
我们看到在统计节点拥有的关系数目时,产生8次dbhits,以及执行count()产生的EagerAggregation操作。查询结果告诉我们该节点有7个关系。
事实上,Neo4j数据库在保存关系时会同时更新相关节点的关系计数器,该计数器保存在数据库中并和节点相关联。我们其实不需要真正读出节点上的关系来统计它们的数量,而只要从关系计数器中读取当前的数值即可。参见下面的查询:
PROFILE MATCH (n:Person {name:‘Keanu Reeves’}) RETURN size((n)-[]-())
从查询计划中可以看出,读取关系计数器的操作是通过调用GetDegree(node, relationshiptype, direction)完成的,而且只有1次dbhit,无论实际关系的数量有多少。这里,因为我们没有指定关系类型和方向,第二个参数是None,第三个参数是BOTH。可以试试下面的查询来帮助理解GetDegree的用法:
PROFILE MATCH (n:Person {name:‘Keanu Reeves’}) RETURN size((n)-[:ACTED_IN]->())
本文链接:https://blog.csdn.net/GraphWay/article/details/88100842相关文章
- Solr Facet 统计查询
- pm2.5检测统计
- 数据统计之日增用户统计
- 空间滤波-统计排序滤波器-修正阿尔法均值滤波器
- 数学即音乐,统计即文学
- 记住这个网站:服务器相关数据统计网站 http://news.netcraft.com/
- 《统计会犯错——如何避免数据分析中的统计陷阱》—第2章膨胀的真理
- 10分钟精通Nginx访问日志分析统计
- 《JavaScript设计模式》——11.3 站长统计
- 《机器学习与数据科学(基于R的统计学习方法)》——2.1 管理你的工作目录
- 力扣解法汇总2049-统计最高分的节点数目
- 统计学习方法-朴素贝叶斯(补充)
- 华为OD机试 - 热点网络统计(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- Spark 0.8 集群(CentOS6.4)-简单统计测试
- nginx自定义模块编写-实时统计模块--转载
- CAD如何统计图块数量?CAD块统计教程
- 手把手一步步实现基于vvvvv实现自由管理系统,包含用户的增删改查、限速、流量控制、登录终端数量控制、自动部署多节点链路、日志统计等等,附自动化脚本和源码(三)
- 手把手一步步实现基于vvvvv实现自由管理系统,包含用户的增删改查、限速、流量控制、登录终端数量控制、自动部署多节点链路、日志统计等等,附自动化脚本和源码(二)