Neo4j cypher查询需要花费大量时间

时间:2014-04-30 06:19:10

标签: neo4j

任何人都可以让我知道这个查询有什么问题

MATCH(I1:接口),(I2:接口)WHERE I1.IfIPAddress =' 172.16.42.9'和I2.IfIPAddress =' 172.16.42.10' WITH Count(I1)+ Count(I2)AS iCount,I1,I2 在哪里iCount = 2
返回iCount;

其中有5000个接口节点。 为什么执行查询需要花费大量时间,但仍然无法执行?

1 个答案:

答案 0 :(得分:1)

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

MATCH (i1:Interface {IfIPAddress:'172.16.42.9'}), (i2:Interface {IfIPAddress:'172.16.42.10'})
RETURN i1, i2;

如果两者都存在,则返回单行(带有i1和i2节点),否则返回0行。

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

创建索引:

CREATE INDEX ON :Interface(IfIPAddress);

要创建唯一性约束(它也会自动为您创建上述索引):

CREATE CONSTRAINT ON (i:Interface)
   ASSERT i.IfIPAddress IS UNIQUE;