Нет, вы не можете преобразовать Cypher в нотацию Big O.
Cypher не описывает, как получить информацию, только какую информацию вы хотите вернуть. Планировщик Cypher в базе данных Neo4j должен преобразовать Cypher в исполняемый запрос (используя эвристику о том, какую информацию он должен найти, какие индексы доступны для него и внутреннюю статистику по запрашиваемому набору данных. Поэтому просто измените Состояние базы данных может изменить сложность Cypher.)
Очень простой пример этого - Cypher Cypher 3.1 MATCH (a{id:1})-[*0..25]->(b) RETURN DISTINCT b
. Используя довольно усредненный связный граф с циклами, работа с Neo4j 3.1.1 приведет к превышению времени ожидания из-за того, что он слишком сложный (поскольку планировщик пытается найти все пути, даже если ему не нужна эта избыточная информация), тогда как Neo4j 3.2.3 будет возврат очень быстро (поскольку планировщик признает, что ему нужно только выполнить сканирование графика, например поиск в глубину, чтобы найти все подключенные узлы).
Дополнительное примечание, вы можете утверждать, что BIG O обозначения на возвращаемые результаты. Например, MATCH (a), (b)
должен иметь минимальную сложность n ^ 2, потому что результатом является декартово произведение, и выполнение не может быть менее сложным, чем ответ. Это понимание того, как сложность влияет на количество строк, может помочь вам написать Cyphers, которые уменьшат объем работы, которую планировщик заканчивает планировать.
Например, использование WITH COLLECT(n) as data MATCH (c:M)
для уменьшения количества строк, с которыми планировщик заканчивает работу перед следующей частью шифра, с нм (число первых совпадений, число вторых совпадений) до m (число совпадений, равное 1 раз) .
Однако, поскольку Сайфер не дает никаких обещаний о том, как найти данные, нет способа гарантировать сложность выполнения. Мы можем только попытаться написать Сайферы, которые с большей вероятностью получат оптимальный план выполнения, и использовать EXPLAIN / PROFILE, чтобы оценить, может ли планировщик найти относительно оптимальное решение.