3级Neo4j查询!太慢了,执行时间39秒

3级Neo4j查询!太慢了,执行时间39秒,neo4j,Neo4j,请查看下面我试图匹配的图的图像。我不认为我在做那么复杂的事情,所以我不确定Neo4j为什么这么慢 我的数据库中有20MB的数据(约300个节点和350个关系)。我已经为每个节点和属性编制了索引。每次运行我的查询都需要39秒。我得到了我想要的结果,但是查询速度非常慢 我曾尝试将电影1和电影2结合起来,以挂断相同的所有电影,但查询仍然很慢 MATCH ( mainGuy:Person { uri:'http://example.com/foo' })<-[:IN]-(movie1:Movie

请查看下面我试图匹配的图的图像。我不认为我在做那么复杂的事情,所以我不确定Neo4j为什么这么慢

我的数据库中有20MB的数据(约300个节点和350个关系)。我已经为每个节点和属性编制了索引。每次运行我的查询都需要39秒。我得到了我想要的结果,但是查询速度非常慢

我曾尝试将电影1和电影2结合起来,以挂断相同的所有电影,但查询仍然很慢

 MATCH
( mainGuy:Person { uri:'http://example.com/foo' })<-[:IN]-(movie1:Movie) ,

(movie1)<-[:TYPE|:SUBTYPE*1..3]-(allM:All_Movies  ),

( nonMoF:Person)<-[:IN]-(movie1),

(movie2:Movie)<-[:TYPE|:SUBTYPE*1..3]-(allM2:All_Movies  ),

( pou:Person)<-[:IN]-(movie2),

(pou2:Person)<-[:IN]-(movie2),

( reqGuy:Person)<-[:ACTED_IN]-( movie2),

( nonMoF)<-[:ACTED_IN]-(movie2) ,

(reqGuy)<-[:NAME*0..3]-(cnBlah:OtherData)  ,

(oin656:IdInfo)<-[r:OTHER*0..3]-(reqGuy) 

WHERE  allM2.name  = 'Lionheart'  AND  allM.name  = 'Lionheart'  AND not(  ()-[:NAME]->(oin656)  )

RETURN reqGuy, cnBlah , oin656, movie1
匹配

(maingue:Person{uri:'http://example.com/foo“})这样的东西应该表现得更好,因为它减少了两者之间的基数。但从属性图的角度来看,您的模型仍然有问题

如果您可以分享您的示例数据库,我们也可以更好地帮助您

create index on :Person(uri);
create index on :All_Movies(name);



MATCH (mainGuy:Person { uri:'http://example.com/foo' })<-[:IN]-(movie1:Movie)<-[:TYPE|:SUBTYPE*1..3]-(allM:All_Movies)
WHERE allM.name  = 'Lionheart' 
WITH distinct movie1

MATCH ( nonMoF:Person)<-[:IN]-(movie1),( nonMoF)<-[:ACTED_IN]-(movie2)

MATCH (movie2:Movie)<-[:TYPE|:SUBTYPE*1..3]-(allM2:All_Movies  )

WHERE allM2.name  = 'Lionheart'

WITH movie2, collect(movie1) as movies

MATCH ( reqGuy:Person)<-[:ACTED_IN]-( movie2)
MATCH (reqGuy)<-[:NAME*0..3]-(cnBlah:OtherData) 
WITH reqGuy, collect(distinct cnBlah) as cnBlahs, movies

MATCH (oin656:IdInfo)<-[r:OTHER*0..3]-(reqGuy) WHERE not(()-[:NAME]->(oin656))

RETURN reqGuy, cnBlahs , collect(distinct oin656) as oins, movies;
在:Person(uri)上创建索引;
创建索引:所有电影(名称);

匹配(maingue:Person{uri:'http://example.com/foo“})看起来您将RDF模型放入了属性图中。您跨越了大量的潜在路径。您匹配的某些信息从未使用过。您是说Neo4j无法在39秒内处理该查询,因为我使用的是该模型?数据库中只有约300个节点。来吧