Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph Neo4j匹配和创建在10000节点图中花费的时间太长_Graph_Neo4j_Graph Databases_Py2neo - Fatal编程技术网

Graph Neo4j匹配和创建在10000节点图中花费的时间太长

Graph Neo4j匹配和创建在10000节点图中花费的时间太长,graph,neo4j,graph-databases,py2neo,Graph,Neo4j,Graph Databases,Py2neo,我有这样一个数据模型: 人节点 电子邮件节点 拥有关系 列出关系 了解关系 每个人可以拥有一封电子邮件并列出多封电子邮件(如联系人列表,假设每人有200个联系人) 我试图执行的查询是查找所有拥有联系人列表中的电子邮件的人,并在他们之间创建一个相互了解的关系 MATCH(n:Person{uid:'123})-[r1:LISTS]->(m:Email)[l] 我当前数据库的计数如下所示: 人员节点数:10948 电子邮件节点数:1951481 注册人数:21882 列表相关编号:437634

我有这样一个数据模型:

  • 人节点
  • 电子邮件节点
  • 拥有关系
  • 列出关系
  • 了解关系
每个人可以拥有一封电子邮件并列出多封电子邮件(如联系人列表,假设每人有200个联系人)

我试图执行的查询是查找所有拥有联系人列表中的电子邮件的人,并在他们之间创建一个相互了解的关系

MATCH(n:Person{uid:'123})-[r1:LISTS]->(m:Email)[l]

我当前数据库的计数如下所示:

  • 人员节点数:10948
  • 电子邮件节点数:1951481
  • 注册人数:21882
  • 列表相关编号:4376340(每个人有200个唯一列表相关编号)
现在我的问题是,在当前数据库上运行上述查询需要4.3到4.8秒的时间,这对于我的需要是不可接受的。我想知道,考虑到我的数据模型,这是正常的时间安排,还是我对查询(甚至模型)做了一些错误的事情

任何帮助都将不胜感激。此外,如果这对于Neo4j来说是正常的,请随意推荐其他能够更好地处理此类模型的图形数据库

事先非常感谢

更新:

我的查询是:
profilematch(n:{uid:'4692'})-[:LISTS]->(:Email)(l)

“我的查询”上的“配置文件”命令将返回以下内容:

密码版本:密码2.2,计划者:规则。3919222 2713毫秒内的总db点击数。


是的,4.5秒来匹配索引中的一个人及其(m:电子邮件)[l] 有关详细信息,请参见。您可能还希望在强制使用一个或另一个基于成本和规则的查询计划器来比较其计划的同时,分析您的查询

CYPHER planner=cost
PROFILE
MATCH (n:Person {uid:'123'})-[:LISTS]->(m:Email)<-[:OWNS]-(l:Person) 
MERGE (n)-[:KNOWS]->[l]
CYPHER planner=成本
轮廓
匹配(n:Person{uid:'123'})-[:列表]->(m:Email)[l]

有了这些,您就有希望找到并纠正问题,或者用这些信息更新您的问题,以帮助其他人帮助您找到问题。

您是否有个人节点的uid属性索引<代码>在:个人(uid)上创建索引。此外,也许您可以分析查询并将结果添加到您的问题中(请参见,)。此外,您将希望使用
MERGE
而不是
CREATE UNIQUE
。py2neo使用neo4j的REST接口,您应该尝试使用,嵌入式neo4j要快得多。@Supamiu我在web界面中也有相同的结果,但据我所知,这也会发送HTTP请求(发布到事务集合,然后提交到特定事务),对吗?是的,web界面也在使用HTTP。您是否尝试使用“合并”而不是“创建唯一”?我很想看到结果非常感谢,profile命令实际上帮助我了解了幕后发生的事情(执行计划)。索引uid并根据执行计划知识调整查询,可将查询时间缩短到
CYPHER planner=cost
PROFILE
MATCH (n:Person {uid:'123'})-[:LISTS]->(m:Email)<-[:OWNS]-(l:Person) 
MERGE (n)-[:KNOWS]->[l]