我有一个neo4j图表,其节点多于100,000个。当我在REST上使用以下cypher查询时,我得到一个Java堆错误。该查询正在从一组购买中生成一个2项目集。
MATCH (a)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN a.id,c.id
类型1(a,c)和类型2(b)的两种类型节点的叉积为80k * 20k
是否有针对相同目的的更优化的查询?我仍然是cypher的新手。 (我可以分别在所有Type1和Type2节点上有两个索引) 或者我应该去增加java堆大小。
我正在使用py2neo进行REST查询。
感谢。
答案 0 :(得分:0)
正如你所说的十字产品是80k * 20k所以你可能会把它们全部拉过电线? 这可能不是你想要的。通常,此类查询受启动用户或启动产品的约束。
您可以尝试在neo4j-shell中运行此查询:
MATCH (a:Type1)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN count(*)
如果节点上有标签,您可以使用该标签Type1
吗?开车吧。
只是看看你看到了多少条路径。但80k乘20k是16亿路径。
我不确定您使用的版本(哪一个)的py2neo是否已经使用了流式传输?尝试使用py2neo的事务端点(即cypherSession.createTransaction()API)。