在我的Neo4j数据库中,有许多节点具有相同的nodeID和不同的级别,并且它们通过路径连接。每次尝试查找最大级别小于特定级别n
的节点时。我使用以下Cypher查询,该查询从具有nodeID id
的最新节点开始搜索。
MATCH (:Node{NodeID:id,Current:'true'})-[:type*0..]->(m:Node{NodeID:id})
WHERE m.Level < n
RETURN m
ORDER BY m.Level DESC
LIMIT 1
我为此数据库创建的索引如下:
CREATE INDEX Nodes FOR(n:Node) ON (n.NodeID, n.Level)
但是,这有点慢,尤其是当路径较长时,我需要重复此过程数千次。所以我的问题是,是否有更好的实现方式,是否需要修改索引以提高性能?预先感谢您的帮助!
答案 0 :(得分:0)
假设所有具有相同<html>
<head>
</head>
<body>
<div th:replace="fragment :: myFragment">
</div>
</body>
</html>
的{{1}}都位于一个Node
节点的NodeID
路径中,并且具有相同的type
,然后执行以下查询应该在逻辑上等效但要更快:
Current
此查询假定NodeID
和MATCH (m:Node)
WHERE m.NodeID = $id AND m.Level < $n
RETURN m
ORDER BY m.Level DESC
LIMIT 1
是查询parameters。