慢Neo4j查询。需要4312毫秒?

时间:2015-12-24 21:08:41

标签: neo4j

我使用我的数据库得到了结果,但它的速度慢了。

整个节点路径都挂起了VBI_ded42b6667f,所以我认为它应该很快。

我使用的数据集只有20MB,所以我不明白为什么这么慢。在我的neo4jproperties文件中,我将node_keys_indexable设置为V,OI,VI等节点。

任何人都可以指点我如何使这个查询只需要150毫秒吗?

MATCH (VB_dbddd5e6731:VI)<-[:INS]-(VBI_ded42b6667f:V { name:'axpl' } ),
( non_dom:OI)<-[:AG]-(VB_dbddd5e6731 ), 
( OI_64cc557459:OI { u:'hello_ry' })<-[:PA]-(VB_dbddd5e6731 ),
(VB_3901242e244:VI)<-[:INS]-(VBI_ded42b6667f),
( p1ou:OI)<-[:AG]-(VB_3901242e244 ),
( p2ou:OI)<-[:AG]-(VB_3901242e244 ),
( OI_49067f7680:OI)<-[:PA]-(VB_3901242e244 ),
( non_dom:OI)<-[:PA]-(VB_3901242e244 )
RETURN OI_49067f7680,VB_dbddd5e6731

1 个答案:

答案 0 :(得分:2)

我不确定node_keys_indexable属性的作用,但您应该确保name标签V属性的索引和{{1} u标签的属性。你可以在Cypher中创建它:

OI

如果这没有帮助,请在Neo4j的网络控制台中将CREATE INDEX ON :V(name) CREATE INDEX ON :OI(u) 放在查询的开头,以获得输出,告诉您查询的哪些部分很慢。

另一方面:为了使您的查询更具可读性,我建议您从锚节点(您根据属性的值进行过滤的节点)开始。我也会组织你的PROFILE,以便它尽可能地从锚节点流出。像这样:

MATCH

此外,也许您的查询是动态生成的,但我发现由于所有的首字母缩略词,很难理解该域。如果您自己工作,这可能不是问题,但如果您得到任何帮助,它可能会让事情变得混乱。当您使用描述性标签和关系类型时,Neo4j效果最佳(我认为)。