为什么这个密码查询只有 ~30 个节点并说 50 个关系这么慢?
why is this cypher query so slow with only ~30 nodes and say 50 relationships?
MATCH
(t:T)-[:Rel]-(o:Espresso)-[:Rel]->(l:Location)<-[:Rel]-(p:Espresso {id:"ttt"})-[:Rel]->t,
o--(:Rating)--p
RETURN
distinct o.id AS otherId,
l.location AS location,
t.hour AS hour,
t.day as day
超时了。我尝试将其作为 where
子句并使用 with
但没有区别。 ,
之前的第一部分执行得很快...
整个数据库只有30个nodes/50关系?这看起来真的很奇怪...您之前是否 created/deleted 有很多节点,也许是作为实验的一部分?如果是这样,您可能需要尝试重新启动服务器。
改进 query/structure
- 不要在匹配中使用“,”它将作为笛卡尔积。
- 您在所有节点之间使用相同的关系,即 :Rel
注意 - 始终尝试在不同类型的节点中使用唯一的关系名称。
- 首先浏览此文档
http://neo4j.com/docs/stable/cypher-query-lang.html
- 另请查看如何编写优化查询
http://www.slideshare.net/neo4j/optimizing-cypher-32550605
这似乎已经解决了。
MATCH (t:Time)-[:Rel]-(o:Espresso)-[:Rel]->(l:Location)<-[:Rel]-(p:Espresso {id:"ttt"}) -[:Rel]->t with DISTINCT o,p,t,l MATCH (o)--(rat:Rating)--(p) RETURN DISTINCT o.id as otherId, l.location作为地点,t.start作为开始,t.day作为日期
谢谢
MATCH
(t:T)-[:Rel]-(o:Espresso)-[:Rel]->(l:Location)<-[:Rel]-(p:Espresso {id:"ttt"})-[:Rel]->t,
o--(:Rating)--p
RETURN
distinct o.id AS otherId,
l.location AS location,
t.hour AS hour,
t.day as day
超时了。我尝试将其作为 where
子句并使用 with
但没有区别。 ,
之前的第一部分执行得很快...
整个数据库只有30个nodes/50关系?这看起来真的很奇怪...您之前是否 created/deleted 有很多节点,也许是作为实验的一部分?如果是这样,您可能需要尝试重新启动服务器。
改进 query/structure
- 不要在匹配中使用“,”它将作为笛卡尔积。
- 您在所有节点之间使用相同的关系,即 :Rel 注意 - 始终尝试在不同类型的节点中使用唯一的关系名称。
- 首先浏览此文档 http://neo4j.com/docs/stable/cypher-query-lang.html
- 另请查看如何编写优化查询 http://www.slideshare.net/neo4j/optimizing-cypher-32550605
这似乎已经解决了。 MATCH (t:Time)-[:Rel]-(o:Espresso)-[:Rel]->(l:Location)<-[:Rel]-(p:Espresso {id:"ttt"}) -[:Rel]->t with DISTINCT o,p,t,l MATCH (o)--(rat:Rating)--(p) RETURN DISTINCT o.id as otherId, l.location作为地点,t.start作为开始,t.day作为日期
谢谢