Optimization 多节点Neo4j的匹配查询优化
我正在使用应用程序的相同id连接的3个表上运行查询。但是,此查询运行时间太长,无法获得任何结果。如何优化此查询?用于创建两条边的应用程序id对于Sms和Pcb节点都应相同 这就是查询本身: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运行这个查询
MATCH (pcb:PhoneContactsBook)-[:APP_PCB]->(a:Applications)-[:APP_SMS]->(sms:Sms)
RETURN distinct a.application_id
为了得到查询计划,我使用limit200000
运行这个查询,在1251ms内得到1046648个总db命中率
以下是查询计划:
首先,要获取查询计划,您可以使用
EXPLAIN
而不是PROFILE
:
不要运行查询,只提供查询的查询计划EXPLAIN
执行查询,并给出查询结果及其查询计划PROFILE
但是,您的数据库中似乎有很多这种模式的实例(超过200000个),这就是为什么此查询需要一些时间(每个模式大约6微秒不错^^)谢谢您提醒解释。我已经用查询计划更新了我的问题。此外,查询的本质是查找同时具有sms和电话簿的应用程序。因此,应用程序的id将两个实体统一起来,因此您只需要在返回中使用
应用程序\u id
?是的,唯一的应用程序id,可能是关于其他实体的一些数据。但这不是必须的