СУБД Neo4j: шифр предложение Where и фигурные скобки в пункте матч - что лучше?
Я новичок в Neo4J,и последние несколько дней изучал язык запросов Cypher.
Я понял, что могу написать свой запрос так...
MATCH (b:Beverage)<-[:likes]-(p:Person)-[:likes]->(r:Restaurant)
WHERE b.name = 'Beer' and r.name = 'KFC'
RETURN p.name
... или вот так...
MATCH (b:Beverage{name:'Beer'})<-[:likes]-(p:Person)-[:likes]->(r:Restaurant{name:'KFC'})
RETURN p.name
Какой подход лучше с точки зрения производительности? И почему?
Спасибо.
1 ответ:
Мне очень жаль, но ответ @A-rodin здесь неверен: оба ваших утверждения приводят к одному и тому же плану запроса. Это можно проверить, добавив в оператор префикс
EXPLAIN
и сравнив планы запросов.Для удобства чтения я бы структурировал запрос:
MATCH (p:Person)-[:likes]->(b:Beverage{name:'Beer'}), (p)-[:likes]->(r:Restaurant{name:'KFC'}) RETURN p.name
Здесь запрос читается как предложение на простом английском языке "соответствовать человеку, который любит пиво и любит рестораны KFC".