这个密码查询占用488000毫秒的原因可能是什么?
MATCH (u:User {objectId: 'idUusera'}) MATCH (a:Action {objectId: 'idActiona'}) MERGE (u)-[r:CREATED]->(a)
这个数据库包含了成千上万的动作,但这只发生在某些用户身上。已经有了一个关于User.objectId和Action.objectId的索引
6jjcrrmo1#
这里有一个可能的解释。MERGE子句需要验证该关系是否已经存在。因此,它需要扫描u或a的 * 所有 * CREATED关系。在您的数据库中,通常User的此类关系比Action的少。因此,密码计划者已经决定扫描u的所有输出CREATED关系以验证a不在另一侧。然而,一些User节点可能有大量的传出CREATED关系,对于这样的用户,扫描可能需要很长时间。
MERGE
u
a
CREATED
User
Action
1条答案
按热度按时间6jjcrrmo1#
这里有一个可能的解释。
MERGE
子句需要验证该关系是否已经存在。因此,它需要扫描u
或a
的 * 所有 *CREATED
关系。在您的数据库中,通常User
的此类关系比Action
的少。因此,密码计划者已经决定扫描u
的所有输出CREATED
关系以验证a
不在另一侧。然而,一些
User
节点可能有大量的传出CREATED
关系,对于这样的用户,扫描可能需要很长时间。