Neo4j权威指南之Cypher查询调优

基础知识补充:模式(patterns)

  • 可以讲很多节点和关系编码成任意复杂的想法
  • Cypher很依赖模式
  • 将节点和关系的语法组合在一起可以表达模式
  • 增强模块性,减少重复,可以给模式赋值变量
  • 模式就是一组节点和关系的组合
acted_in = (:Person)-[:ACTED_IN]->(:Movie)

《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《

1、手动查询性能优化总目标:只从图中检索必要数据

2、不必要的数据,尽可能早的过滤掉,减少后期处理的数据量

3、避免返回整个节点,返回其中需要的数据

4、设置可变长度模式的一个上限值,避免包含大量不需要的数据部分

5、Cypher会为每个查询转为一个执行计划

  • 使用参数代替字面值,这样可以复用执行计划

6、Neo4j两种执行计划策略

(1)规则

  • 查询计划器产生查询计划的规则
  • 会使用所有可用索引,但不实用统计信息指导查询编译

(2)成本

7、查询性能分析

(1)EXPLAIN

  • 仅仅查看执行计划,不执行语句

(2)PROFILE

  • 运行语句,并全程监督资源使用情况

8、USING 语句

  • 为一个查询构建执行计划时,影响计划器的决定

9、可以使用USING 使得计划器选择一个特定的开始节点

10、提示器分三种:

(1)索引提示

(2)扫描提示

  • 强制Cypher不使用本应使用的索引,而使用标签扫描

(3)连接提示

  • 再没有更好的开始点的情况下,可能选择很差的开始点
  • 连接提示强制选择开始点

猜你喜欢

转载自my.oschina.net/u/3847203/blog/1818128
今日推荐