Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 多节点Neo4j的匹配查询优化_Optimization_Neo4j_Graph Databases - Fatal编程技术网

Optimization 多节点Neo4j的匹配查询优化

Optimization 多节点Neo4j的匹配查询优化,optimization,neo4j,graph-databases,Optimization,Neo4j,Graph Databases,我正在使用应用程序的相同id连接的3个表上运行查询。但是,此查询运行时间太长,无法获得任何结果。如何优化此查询?用于创建两条边的应用程序id对于Sms和Pcb节点都应相同 这就是查询本身: MATCH (pcb:PhoneContactsBook)-[:APP_PCB]->(a:Applications)-[:APP_SMS]->(sms:Sms) RETURN distinct a.application_id 为了得到查询计划,我使用limit200000运行这个查询

我正在使用应用程序的相同id连接的3个表上运行查询。但是,此查询运行时间太长,无法获得任何结果。如何优化此查询?用于创建两条边的应用程序id对于Sms和Pcb节点都应相同

这就是查询本身:

 MATCH (pcb:PhoneContactsBook)-[:APP_PCB]->(a:Applications)-[:APP_SMS]->(sms:Sms)
    RETURN distinct a.application_id
为了得到查询计划,我使用
limit200000
运行这个查询,在1251ms内得到1046648个总db命中率

以下是查询计划:


首先,要获取查询计划,您可以使用
EXPLAIN
而不是
PROFILE

  • EXPLAIN
    不要运行查询,只提供查询的查询计划
  • PROFILE
    执行查询,并给出查询结果及其查询计划
我在这里没有看到任何优化,因为您要求数据库为您提供特定模式的所有实例,并且没有where子句、子语句、聚合


但是,您的数据库中似乎有很多这种模式的实例(超过200000个),这就是为什么此查询需要一些时间(每个模式大约6微秒不错^^)

谢谢您提醒解释。我已经用查询计划更新了我的问题。此外,查询的本质是查找同时具有sms和电话簿的应用程序。因此,应用程序的id将两个实体统一起来,因此您只需要在返回中使用
应用程序\u id
?是的,唯一的应用程序id,可能是关于其他实体的一些数据。但这不是必须的