Я хотел бы предоставить тот же уровень поддержки настройки запроса в Neo4j, который я предоставляю для реляционных баз данных. Я понимаю, что многие проблемы настройки лучше всего решать с помощью проектирования данных, но иногда вам просто нужно помочь оптимизатору. Не так много документации об оптимизации и настройке запросов в Neo4j 2.2.5, поэтому я надеюсь, что кто-то может помочь мне ответить на несколько вопросов о настройке запроса Cypher в Neo4j.Neo4j Cypher Query Tuning
1) Оптимизатор: в реляционной СУБД одним из способов помочь оптимизатору принять правильные решения является обновление статистики. Я не могу найти документацию о том, как оптимизатор, основанный на затратах, принимает свои решения, но я бы ожидал, что он должен собрать некоторую статистику о данных, чтобы получить более качественные ответы, чем мы получили от оптимизатора на основе правил.
a. Есть ли способ обновить эти статистические данные?
b. Получаю ли я какую-либо выгоду от снижения производительности и воссоздания индексов в загружаемой нами базе данных и готов сделать только чтение?
c. Знаете ли вы о какой-либо документации по оптимизатору, которая может помочь мне понять решения, которые она принимает?
2) Подсказки уровня запроса: я знаю, что у Cypher есть опция подсказок индекса, но во многих случаях было бы здорово, если бы у него был эквивалент подсказки запроса «Force Order», доступный в TSQL. Знаете ли вы, стоит ли мне надеяться на такой запрос в ближайшем выпуске Neo4j?
3) Временные объекты: В реляционной СУБД иногда мне просто приходится смириться с ограничениями в оптимизаторе. В этих случаях мы создаем временные объекты для материализации части данных, чтобы упростить наши запросы. Есть ли признаки того, что временные метки или какой-либо другой временный объект будут доступны в ближайшем выпуске Neo4j?
Благодаря
Все хорошие вопросы! Я бы сказал, что вы можете 'ПРОФИЛЬ' /' EXPLAIN' ваши запросы, если вы еще не знаете об этом –