未知错误(内存不足)

时间:2014-03-11 22:06:30

标签: neo4j cypher

以下cypher查询在Community 2.0.1中超时。不幸的是,我无法使用它生成profile输出。

如果用户已被复制,我希望消除歧义,并尝试在特定用户发生这种情况时找到基线。然而,看起来Cypher并没有“开始”#39;两个节点具有相同的apiid,而是首先查询数据库中的所有关系。

match (n:LIuser)-[r:CONNECTED]-(), (nnn:LIuser)-[rr:CONNECTED]-()
where n.apiid = 'K1J3V8EI9M' 
    and nnn.apiid = '29302231'
return count(distinct r), count(distinct rr)

提前致谢!

编辑:我意识到我错过了输入这个问题 - 这完全改变了意义。 n.apiid和nnn.apiid是不同的。我最初打的是同样的。

2 个答案:

答案 0 :(得分:1)

您正在创建一个交叉产品,这就是问题所在。

假设您为每个用户提供了1000个CONNECTED查询,然后创建了必须处理的1000 x 1000行。 (通常不会导致1M行出现问题)。也许您还应该分享您的设置和graph.db/messages.log

实际上,如果我正确地理解了你想要的是一个分组,对于重复用户来说,这些分组会返回2行或更多行吗?

MATCH (n:LIuser)-[r:CONNECTED]-()
WHERE n.apiid = 'K1J3V8EI9M' 
RETURN n, count(distinct r)

你甚至可以这样做,看看另一方面是什么:

MATCH (n:LIuser)-[r:CONNECTED]-(m)
WHERE n.apiid = 'K1J3V8EI9M' 
RETURN n, count(distinct r),collect(m)

答案 1 :(得分:0)

您是否尝试在apiid属性上编制索引?

CREATE INDEX ON :LIuser(apiid)