Neo4j:提高密码性能

Neo4j:提高密码性能,neo4j,cypher,Neo4j,Cypher,我有下面的cypher查询,其中我必须展开大约100个数据。但我的问题是,要运行查询,执行它需要很多时间(大约3-4分钟) 我的问题是: CREATE (pl:List {id: {id}, title: {title} }) WITH pl as pl MATCH (b:Units {id: {bId} }) MERGE (b)-[rpl:UNITS_LIST]->(pl) WITH pl as pl UNWIND

我有下面的cypher查询,其中我必须
展开大约100个数据。但我的问题是,要运行查询,执行它需要很多时间(大约3-4分钟)

我的问题是:

CREATE (pl:List {id: {id}, title: {title} })
      WITH pl as pl

      MATCH (b:Units {id: {bId} })
        MERGE (b)-[rpl:UNITS_LIST]->(pl)

      WITH pl as pl

        UNWIND {Ids} as Id

          MATCH (p:Infos {id: Id})
            WITH p as cn, pl as pl
            SET cn :Data
            WITH pl as pl, cn as cn
              MERGE (pl)-[cnpt:DATA_LIST  { email: cn.email } ]->(cn)

          RETURN pl
样本数据

List: 
{
   id: 'some-unique-id',
   name: "some-name''
}

Ids ( Ids should be around 100 ): 
  [ 'some-info-id-01','some-info-id-03' ]

Infos (Neo4j DB):
[
  { id: 'some-info-id-01', others: 'some-others-data-01' },
  { id: 'some-info-id-02', others: 'some-others-data-02' },
  { id: 'some-info-id-03', others: 'some-others-data-03' }
]
有没有改进此密码查询的建议


PS,我正在node.js应用程序中运行这个
CQL

如果有适当的索引,这个查询看起来应该非常快

您应该准备好以下各项:


创建索引:Infos(id);
创建索引:单位(id);
在上创建索引:列表(id);

有了这些索引,查询应该会很快,因为大多数情况下,您都是通过这些ID查找节点,然后在上面做一些非常小的事情。即使有100个ID,查询也不难

相反,如果您没有对ID字段进行索引,neo4j将必须查看大部分/所有字段,以确定要匹配的项。数据越多,查询速度越慢


如果您对这些内容进行了索引,但仍然发现性能非常缓慢,则需要
解释查询并发布计划以获得进一步反馈。

请分析您的查询并将结果查询计划添加到您的问题中(所有元素都展开)。另外,请让我们知道您在数据库中有哪些索引和约束(运行
:schema
的结果)