Cypher: использовать предложение WHERE или определение свойства MATCH для точного соответствия?

В Neo4j (версия 3.0) следующие запросы возвращают одинаковые результаты:

1. MATCH (a:Label) WHERE a.property = "Something" RETURN a
2. MATCH (a:Label {property: "Something"}) RETURN a

Играя с некоторыми большими наборами данных, я заметил (и проверил, используяEXPLAIN а такжеPROFILE) что в некоторых случаях запросы, подобные второму, выполняются лучше и быстрее. Хотя существуют другие случаи, когда обе версии работали одинаково, я еще не видел ни одного, где первая версия работала лучше.

Документация и учебники neo4j также разделены. Там нет явного сравнения между двумя. Документы и документы используют обе версии, часто склоняясь к первой (возможно, потому что неточные совпадения могуттолько быть сделано с использованиемWHERE пункт). Но в рекомендациях также говорится, что чем раньше вы сузите поиск, тем быстрее будет поиск.

Я прав, что обе версии будутвсегда вернуть те же результаты?Прав ли я, что вторая версия часто будет работать лучше, потому что она сужает поиск раньше?

Ответы на вопрос(1)

Ваш ответ на вопрос