2

我想在 Neo4j 中提供与我为关系数据库提供的相同级别的查询调优支持。我知道许多调优问题最好通过数据设计来解决,但有时您只需要帮助优化器。Neo4j 2.2.5 中关于优化器和查询调优的文档不多,所以我希望有人能帮我回答一些关于 Neo4j 中 Cypher 查询调优的问题。

1) 优化器:在关系 DBMS 中,帮助优化器做出更好决策的一种方法是更新统计信息。我找不到有关基于成本的优化器如何做出决策的文档,但我希望它必须收集有关数据的一些统计信息,以便提供比我们从基于规则的优化器中获得的更好的答案。

一个。有没有办法更新这些统计数据?

湾。我会从我们已经加载并即将设为只读的数据库上删除和重新创建索引获得任何性能优势吗?

C。你知道关于优化器的任何文档可以帮助我理解它做出的决定吗?

2) 查询级提示:我知道 Cypher 具有索引提示选项,但在许多情况下,如果它具有与 TSQL 中可用的“强制顺序”查询提示等效的功能,那就太好了。你知道我是否应该在近期的 Neo4j 版本中对这种查询提示抱有希望?

3) 临时对象:在关系型 DBMS 中,有时我只需要让自己适应优化器的限制。在这些情况下,我们创建临时对象来具体化部分数据,以便我们可以简化查询。是否有任何迹象表明临时标签或其他一些临时对象将在近期发布的 Neo4j 中可用?

谢谢

4

1 回答 1

1

您可以使用 profile 或 explain 以及您有多少 db hits。你只需要尽量保持低分贝命中。

您还可以使用“USING INDEX n:Swedish(surname)”,这样您就知道 neo4j 将被迫使用索引。

您可以使用 PLANNER RULE 或 Planner 成本。

于 2015-10-20T13:24:55.223 回答