Neo4j花费更少的时间进行具有更高复杂性(更多过滤器)的查询

时间:2019-05-08 16:58:14

标签: neo4j cypher runtime

我正在对Neo4j浏览器3.5.3版的“入门课程练习”进行2个查询分析。
对我来说,其中一个查询似乎更复杂,但所需时间却少得多。

  • 第一个查询过滤器电影将在2000年之后发布
  • 第二个查询再次按年份过滤,也由演员Tom Hanks过滤

第一个查询

PROFILE MATCH (n:Movie)
 WHERE n.released > 2000
 WITH count(*) AS movies
 RETURN movies

完成79次数据库匹配需要 26毫秒,如下所示:
enter image description here

第二个查询

PROFILE MATCH (n:Movie)<-[:ACTED_IN]-(p:Person)
 WHERE n.released > 2000 AND p.name = 'Tom Hanks'
 WITH count(*) AS movies
 RETURN movies

它可以在更短的时间内完成更多操作(在5毫秒内命中191个db enter image description here

我想念什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

您永远都不要看执行时间来比较两个查询。

执行时间在很大程度上取决于笔记本电脑(cpu,磁盘等)的整体利用率。

要比较两个查询,只需查看数据库匹配数,您就会看到第二个查询的查询次数更高。

数据库命中是数据库的抽象工作单元。