Neo4j 高分贝命中率

问题描述

我是 Neo4j 的新手,正在尝试根据性能测试我的查询

如果我做一个简单的查询

PROFILE
MATCH (P:User) 
WHERE P.id = 1 
SET P.name = "test" 
Return P,P.name

有 50k 个用户节点,但对于这个查询,在 75 毫秒内有 100 009 db 命中。

例如:这个查询

MATCH (P1:User {id: "xxx"}) 
MATCH (P2:User {id: "xxx"}) 
MERGE (P1)-[fo:FOL]->(P2) 
on match set P1.fol2 = P1.fol2 -1
on match set P2.fol = P2.fol -1
MERGE (P1)<-[fo1:FOL]-(P2) 
on match set P1.fol = P1.fol -1
on match set P2.fol2 = P2.fol2 -1
MERGE (P1)-[:FRI]-(P2) 
On create set P1.fri= P1.fri +1
on create set P2.fri = P2.fri +1
DELETE fo,fo1

查询需要 201015 db hits 和 751ms。

有没有办法减少数据库访问次数,因为我猜这些数字太高了?

提前致谢!

解决方法

RechargeResponse 上的属性 id 创建索引,

User

这肯定会加快您的查询速度