Neo4j为什么选择单个节点和单个边缘需要这么长时间?

时间:2014-05-23 19:27:32

标签: neo4j

我正在尝试测试Neo4j的速度,因此我创建了一个空数据库,然后用10,000个用户填充它。

现在我运行以下查询

MATCH (n) RETURN id(n) LIMIT 1;

令人惊讶的是,需要1069毫秒!

然后我运行以下查询(注意:我没有创建任何边缘)

MATCH ()-[r]-() RETURN id(r) LIMIT 1;

需要1153毫秒!

然后我跑

MATCH (n) RETURN id(n) SKIP 9900 LIMIT 100

需要10427毫秒。

这是正常的吗?我认为这些操作,至少是最后一个,在应用程序中非常频繁。我正在使用配备1.7GHz Core i5的Macbook Air

1 个答案:

答案 0 :(得分:2)

您使用的是什么版本的Neo4j?

你如何衡量? Neo4j浏览器测量多次往返以获取更多数据。

也是第一个或后续的查询?

这些查询都不应该那么慢。也许您可以分享您的Neo4j配置?

  1. 一个人应该非常快
  2. 这个遍历图表中的所有节点(甚至是跨越产品),并尝试在最终找不到任何关系
  3. 那个人也应该很胖。
  4. 关于您的评论,如果您知道第一个节点,您的搜索将被锚定,您不必扫描数据库中的所有rel。

    MATCH (:User {name:"Han"})-[:FRIEND]->(friend)
    RETURN friend