任何人都可以請讓我知道什麼是錯的這個查詢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