任何人都可以请让我知道什么是错的这个查询Neo4j的暗号查询需要大量的时间
MATCH(I1:接口),(I2:接口),其中I1.IfIPAddress =“172.16.42.9” AND I2.IfIPAddress ='172.16.42.10'WITH COUN(I1)+ Count(I2)AS iCount,I1,I2 WHERE iCount = 2
return iCount;
其中有5000个接口节点。 为什么执行查询需要很长时间,但仍然不能执行?
任何人都可以请让我知道什么是错的这个查询Neo4j的暗号查询需要大量的时间
MATCH(I1:接口),(I2:接口),其中I1.IfIPAddress =“172.16.42.9” AND I2.IfIPAddress ='172.16.42.10'WITH COUN(I1)+ Count(I2)AS iCount,I1,I2 WHERE iCount = 2
return iCount;
其中有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);
要创建唯一性约束,而不是(也自动为您创建上述指数):
CREATE CONSTRAINT ON (i:Interface)
ASSERT i.IfIPAddress IS UNIQUE;
就明白了:你正在寻找那些两个接口,具有特定的IP地址,并且只有在任何接口有1个或2个发行版(如果两个接口都有,否则只有2个接口)的情况下返回结果。这样对吗? – MarcoL
是的。我希望这两个接口在创建链接之前都存在,这就是查询的第一部分所做的。如果两者都存在并且没有重复我会计数将返回2. – Nipun