我使用我的数据库得到了结果,但它的速度慢了。
整个节点路径都挂起了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
答案 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效果最佳(我认为)。