在图数据库中我们经常需要统计节点上的关系数目。一种常见的查询写法是这样的:

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

【Neo4j查询优化系列】如何快速统计节点的关系数的更多相关文章

  1. SpringBoot系列: RestTemplate 快速入门

    ====================================相关的文章====================================SpringBoot系列: 与Spring R ...

  2. Visual Studio使用正则表达式快速统计总共代码行数

    原文:Visual Studio使用正则表达式快速统计总共代码行数 按CTRL+SHIFT+F,勾上支持正则表达式,然后输入搜索内容: <span style="font-family ...

  3. Excel如何快速统计一列中相同数值出现的个数--数据透视表

    excel如何快速统计一列中相同数值出现的个数_百度经验 --这里介绍了两种解决方式,用第一种https://jingyan.baidu.com/article/9113f81b2c16822b321 ...

  4. Excel 中如何快速统计一列中相同字符的个数(函数法)

    https://jingyan.baidu.com/article/6d704a132ea17328da51ca78.html 通过excel快速统计一列中相同字符的个数,如果很少,你可以一个一个数. ...

  5. Excel 2010 如何快速统计一列中相同数值出现的个数 很不错

    https://jingyan.baidu.com/article/9113f81b2c16822b3214c785.html 最近经常看到论坛和百度知道的朋友提问关于“excel中如何快速统计一列中 ...

  6. vSphere 5.5.0 U1配置问题:主机的快速统计信息不是最新的(转载)

    最近公司新购置了几台DELL服务器用来上桌面虚拟化,前期搭建测试环境进行功能验证,底层自然而然的选择VMware ESXi,当前最新版本为ESXi 5.5.0 U1,单独数据库安装,相对5.1来说,5 ...

  7. Flask开发系列之快速入门

    Flask开发系列之快速入门 文档 一个最小的应用 调试模式 路由 变量规则 构造 URL HTTP 方法 静态文件 模板渲染 访问请求数据 环境局部变量 请求对象 文件上传 Cookies 重定向和 ...

  8. linux命令行快速统计文件(压缩文件)的行数

    统计(文件|压缩文件)的行数 zcat file.gz | sed -n '$='                                         #迅速.直接打印出多少行.-n 取消 ...

  9. SQL Server 系列文章快速导航(SWF版)

    一.前言 在博客园写博客不自不觉已经有5个年头了,一开始只是为了记录工作中遇到的问题和解决办法,后来写的文章不自不觉的侧重在SQL Server方面的技术文章,在2014年1月终于鼓起勇气申请了微软S ...

随机推荐

  1. 十、hibernate的延迟加载和抓取策略

    延迟加载:控制sql语句发送时机 抓取策略:控制sql语句格式,子查询.连接查询.普通sql 延迟加载 延迟加载(lazy),也叫做懒加载:执行到该行代码时,不发送sql进行查询,只有在真正使用到这个 ...

  2. [Java 教程 00] 计算机基础

    前言 我想,来到这的朋友肯定是想学习JAVA或者想要进入IT这个行业的.考虑到大家的基础可能不一样,有些人可能还是用着新买的电脑,为了让大家在后续的学习中更加顺畅.在学习一门全新的计算机语言之前,我需 ...

  3. 使用await写异步优化代码

    使用promise: function readMsg(){ return dispatch=>{ axios.post('/msgList').then(res=>{ console.l ...

  4. Redis 设置权限密码,以及如何开启关闭设置

    linux redis 设置密码:   在服务器上,这里以linux服务器为例,为redis配置密码. 1.第一种方式 (当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后 ...

  5. shell条件测试举例

  6. Android面向切面编程(AOP)(转)

    转自:https://www.jianshu.com/p/aa1112dbebc7 一.简述 1.AOP的概念 如果你用java做过后台开发,那么你一定知道AOP这个概念.如果不知道也无妨,套用百度百 ...

  7. 第4篇创建harbor私有镜像库

        一.部署准备: 1.准备harbor软件包       在部署节点上:       2.挂载一个磁盘,专门存储harbor镜像和文件     3.进入到/etc/docker/harbor/目 ...

  8. python数组的复制问题

    1.a=[2,3,4,5] b=a 只是将b指向a,对b的操作会影响a 2.如果需要对b操作,不影响a b=a[:]

  9. Spring 讲解(一 )

    1.如何理解 Spring 框架 简单来说,Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架. 因为以前写代码的时候,在使用类对象的时候,经常需要实例化创建(new 出来) ...

  10. eclipse中服务器找不到项目怎么解决

    在我们运行项目前,都需要将项目部署到tomcat上,但是有时我们会遇到这种情况:项目明明存在,但是eclipse中tomcat的add and remove找不到项目,无法部署,那么这个问题该如何解决 ...