match 查询较慢的

  • nebula 版本:v2.0.0-alpha
  • 部署方式 分布式 部署 3台机器
  • 硬件信息
    • 4cpu、12G RAM、 80G SSD
  • 问题的具体描述
    一共122202数据,针对每一类型的节点均创建了索引, 但是未对属性创建索引

执行 match (p:person)-[:r_visits]->(v:visits)-[:r_event]->(event) return event.event_body 需要25秒

person 共300个, visits节点865个, event 共20158个节点,

如何设计可以提高查询速度, 未来还需要增加person7000个, 总节点数据大概在两千万+

这里慢的原因是没有添加任何的过滤或者起点信息,每次都全索引扫描。你可以再分析你的应用场景,是否真的需要每次都要全量的扫描?如果不是的话,可以适当的建立索引和加上过滤条件,比如在 person 的 name 属性上建立索引,查询的时候限定 name 的值:

match (p:person{name: "Tim"})-[:r_visits]->(v:visits)-[:r_event]->(enent)
return enent.event_body

或者

match (p:person)-[:r_visits]->(v:visits)-[:r_event]->(enent)
where id(p) in ["Tim", "Tom"]
return enent.event_body