我想在Neo4j中为关系数据库提供相同级别的查询调优支持。我知道很多调优问题最好通过数据设计来解决,但有时你只需要帮助优化器。在Neo4j 2.2.5中没有太多关于优化器和查询调优的文档,所以我希望有人可以帮我回答一些关于Neo4j中Cypher查询调优的问题。
1)优化器:在关系型DBMS中,帮助优化器做出更好决策的一种方法是更新统计信息。我找不到基于成本的优化器如何做出决策的文档,但我希望它必须收集一些关于数据的统计数据,以便得出比我们从基于规则的优化器得到的更好的答案。
一个。有没有办法更新这些统计数据?
湾在我们加载的数据库中删除和重新创建索引并且即将进行只读时,我是否会获得任何性能优势?
℃。您是否知道有关优化器的任何文档可能有助于我理解它所做出的决策?
2)查询级别提示:我知道Cypher可以选择索引提示,但在很多情况下,如果它具有TSQL中可用的“强制命令”查询提示的等价物,那将会很棒。你知道我是否应该在近期发布的Neo4j中对这种查询暗示抱有希望?
3)临时对象:在关系型DBMS中,有时我只需要协调优化器中的限制。在这些情况下,我们创建临时对象以实现部分数据,以便我们可以简化查询。在近期发布的Neo4j版本中是否有任何迹象表明临时标签或其他临时对象可用?
由于
答案 0 :(得分:0)
您可以使用个人资料或解释,以及您拥有多少个db命中。你只需要尝试保持db命中率低。
你也可以使用“USING INDEX n:Swedish(surname)”,这样你就知道neo4j将被迫使用索引。
您可以使用PLANNER RULE或Planner费用。