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