基础知识补充:模式(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)连接提示
- 再没有更好的开始点的情况下,可能选择很差的开始点
- 连接提示强制选择开始点