allShortestPaths
기능은 두 노드 간의 모든 최단 경로를 열거합니다. 따라서 쿼리에는 object
및 apiUser
노드의 모든 가능한 쌍이 소요되며 각 쌍 사이의 모든 최단 경로가 열거됩니다. 그러면 어떻게 그 일을 막을 수 있을까요?
먼저
, 당신은 다음과 같이 원래 쿼리를 단순화 할 수 있습니다 :
MATCH p=allShortestPaths((object {id:'1489751911095'})-[*]-(apiUser:ApiUser))
RETURN p
LIMIT 1
둘째, 당신은 단지 하나 개의 경로를 필요로하는 경우, 왜 shortestPath
기능을 사용하지?
MATCH p=shortestPath((object {id:'1489751911095'})-[*]-(apiUser:ApiUser))
RETURN p
ORDER BY length(p) DESC
LIMIT 1
이 가장 효율적인 해결책이 아니다 : 당신이 경로의 길이에 따라 결과를 정렬 할 것, 그래서
MATCH p=shortestPath((object {id:'1489751911095'})-[*]-(apiUser:ApiUser))
RETURN p
LIMIT 1
이 여전히 각 apiUser
에 대한 최단 경로를 계산합니다 Neo4j는 각각 apiUser
에 대한 최단 경로를 계산합니다. 솔루션이 사용 사례에 적용 가능한지 여부는 데이터베이스의 apiUser
수에 따라 다릅니다.