У меня есть несколько запросов, которые выполняют проверку «perm» в предложении where.Это более или менее выглядит так:
where (r IS NULL) and ((team.visibility = 6)
or ((team.visibility = 3) and (user)-[:FRIEND]- (:User{userid:team.owner}))
or ((team.visibility = 4) and (user)-[:FRIEND*1..2]-(:User{userid:team.owner}))
or ((team.visibility = 5) and (user)-[:FRIEND]-(:User)-[:HAS]->(:UserTeamRef)-[:JOINED]->(team)))
match (team) <- [: JOINED | SUSPENDED] - (members: UserTeamRef) </p>
Friend of Friend (foaf) для команды.visibility = 4 явно дорогая операция.Он выполняется при каждом запросе, даже если в наборе данных, с которым я тестирую, нет ни одной команды с видимостью = 4.
Я ожидаю, что 98% времени запроса будет закорачиваться наteam.visibility = 6, потому что 98% команд имеют это значение перми.Я также ожидал бы, что с 0 командами при видимости = 4, что матч foaf никогда не произойдет.
Что дает?