Почему мое предложение WHERE не закорачивает - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть несколько запросов, которые выполняют проверку «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 никогда не произойдет.

Что дает?

Query Plan with team.visibility=4

Query plan w/o team.visibility=4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...