Neo4j cypher查询需要很多时间

Neo4j cypher查询需要很多时间,neo4j,Neo4j,有人能告诉我这个问题出了什么问题吗 匹配(I1:Interface),(I2:Interface),其中I1.IfIPAddress='172.16.42.9'和I2.IfIPAddress='172.16.42.10',将计数(I1)+计数(I2)作为iCount,I1,I2 其中iCount=2 返回i计数 其中有5000个接口节点。 为什么执行查询要花很多时间,但它仍然不执行?如果您只是想测试两个接口实例是否都存在,您可以这样做: MATCH (i1:Interface {IfIPAddr

有人能告诉我这个问题出了什么问题吗

匹配(I1:Interface),(I2:Interface),其中I1.IfIPAddress='172.16.42.9'和I2.IfIPAddress='172.16.42.10',将计数(I1)+计数(I2)作为iCount,I1,I2 其中iCount=2
返回i计数

其中有5000个接口节点。
为什么执行查询要花很多时间,但它仍然不执行?

如果您只是想测试两个接口实例是否都存在,您可以这样做:

MATCH (i1:Interface {IfIPAddress:'172.16.42.9'}), (i2:Interface {IfIPAddress:'172.16.42.10'})
RETURN i1, i2;
若两者都存在,那个么将返回一行(带有i1和i2节点),否则将返回0行

此外,为了加速这些查询,您应该创建索引或唯一性约束(如果没有两个接口节点可以具有相同的IfIPAddress值)

要创建索引,请执行以下操作:

CREATE INDEX ON :Interface(IfIPAddress);
要改为创建唯一性约束(这也会自动为您创建上述索引),请执行以下操作:


要理解的是:您正在寻找这两个具有特定IP的接口,并且您只想在任何接口具有1或2个发生率时返回结果(如果其中一个同时具有2个发生率,则仅返回具有2个发生率的接口)。是吗?是的。我希望在创建链接之前这两个接口都存在,这就是查询的第一部分所做的。如果两者都存在且没有重复,我计数将返回2。请告诉我两个匹配语句之间的区别,以及neo4j如何处理这两个匹配。原始查询进行相同的匹配,此外还计算匹配数。计数是不必要的。@Nipun我回答你的问题了吗?真正的问题是执行此查询需要花费很多时间,等待大约10分钟后,查询没有完成。我仍然感到困惑,因为这不应该花那么多时间。顺便说一句,我还没有建立索引,但仍然不应该花费那么多时间。是的,我不希望在5000个节点上迭代两次需要>10分钟。你能尝试索引,看看它是否仍然没有结果吗?
CREATE CONSTRAINT ON (i:Interface)
   ASSERT i.IfIPAddress IS UNIQUE;