当前位置:   article > 正文

NodeByIdSeek 和 NodeIndexSeek对比

NodeByIdSeek 和 NodeIndexSeek对比

NodeByIdSeekNodeIndexSeekNeo4j 中常见的两种节点查找操作,它们的效率主要取决于查询的具体场景和节点的数量。以下是它们的效率对比和适用场景:

1. NodeByIdSeek

  • 描述: NodeByIdSeek 是通过节点的内部 ID 查找节点的操作。这种查找方式非常高效,因为 Neo4j 使用内部 ID 进行直接寻址。
  • 适用场景: 当你已经知道节点的内部 ID,并且需要快速定位到该节点时,使用 NodeByIdSeek 是最佳选择。
  • 效率: 由于内部 ID 是唯一且直接可用的索引,因此 NodeByIdSeek 的时间复杂度为 O(1),是最为高效的查找方式。

2. NodeIndexSeek

  • 描述: NodeIndexSeek 是通过指定的索引查找节点的操作。这个操作会根据索引字段的值查找节点。
  • 适用场景: 当你需要根据节点的属性值进行查找时(例如查找特定用户名的用户节点),使用 NodeIndexSeek 是合适的选择。
  • 效率: 这种查找方式的效率依赖于索引的类型和数据的分布情况。一般情况下,如果索引建立得当,查找操作的时间复杂度接近 O(log N),比全表扫描(O(N))要高效得多,但比直接通过 ID 查找(O(1))要慢。

性能对比

  • 查询速度:

    • NodeByIdSeek 通常比 NodeIndexSeek 更快,因为它是通过内部 ID 直接访问节点,几乎是即时的。
    • NodeIndexSeek 依赖于索引结构,虽然也很快,但通常会稍微慢一些,因为需要通过索引进行查找。
  • 适用范围:

    • NodeByIdSeek 仅适用于已经知道节点内部 ID 的场景。
    • NodeIndexSeek 适用于根据节点属性值进行查找的场景。
  • 索引的建立和维护:

    • NodeByIdSeek 不需要额外的索引建立和维护。
    • NodeIndexSeek 需要在节点属性上建立索引,这会增加一定的存储和维护成本,但能够显著提升基于属性值的查询性能。

举例说明

假设我们有一个包含大量用户节点的图数据库

NodeByIdSeek 示例:

  1. MATCH (n)
  2. WHERE id(n) = 12345
  3. RETURN n
  • 这里的 id(n) 是节点的内部 ID,查询速度非常快。

NodeIndexSeek 示例:

CREATE INDEX ON :User(username)

建立索引后,可以进行如下查询:

  1. MATCH (n:User {username: 'john_doe'})
  2. RETURN n

这种查询会利用在 username 属性上的索引,提高查询效率。

总结

  • NodeByIdSeek:

    • 速度非常快 (O(1))
    • 适用于已知节点内部 ID 的查找
    • 不需要额外索引
  • NodeIndexSeek:

    • 速度快 (O(log N)),但比 NodeByIdSeek
    • 适用于基于属性值的查找
    • 需要建立和维护索引

根据具体的查询需求选择合适的查找方式,可以在性能和灵活性之间取得平衡。

 

但是

看执行计划

NodeByIdSeek

  1. PROFILE
  2. MATCH (n)
  3. WHERE id(n) = 0
  4. RETURN n
  1. Planner COST
  2. Runtime PIPELINED
  3. Runtime version 5.21
  4. Batch size 128
  5. +-----------------+----+----------------------------+----------------+------+---------+----------------+------------------------+-----------+---------------------+
  6. | Operator | Id | Details | Estimated Rows | Rows | DB Hits | Memory (Bytes) | Page Cache Hits/Misses | Time (ms) | Pipeline |
  7. +-----------------+----+----------------------------+----------------+------+---------+----------------+------------------------+-----------+---------------------+
  8. | +ProduceResults | 0 | n | 1 | 1 | 2 | 0 | | | |
  9. | | +----+----------------------------+----------------+------+---------+----------------+ | | |
  10. | +NodeByIdSeek | 1 | n WHERE id(n) = $autoint_0 | 1 | 1 | 1 | 248 | 2/0 | 1.109 | Fused in Pipeline 0 |
  11. +-----------------+----+----------------------------+----------------+------+---------+----------------+------------------------+-----------+---------------------+
  12. Total database accesses: 3, total allocated memory: 312
  13. 1 row

NodeIndexSeek

  1. PROFILE
  2. MATCH (location:Location {name: 'Malmo'})
  3. RETURN location
  1. Planner COST
  2. Runtime PIPELINED
  3. Runtime version 5.21
  4. Batch size 128
  5. +-----------------+----------------------------------------------------------------+----------------+------+---------+----------------+------------------------+-----------+---------------------+
  6. | Operator | Details | Estimated Rows | Rows | DB Hits | Memory (Bytes) | Page Cache Hits/Misses | Time (ms) | Pipeline |
  7. +-----------------+----------------------------------------------------------------+----------------+------+---------+----------------+------------------------+-----------+---------------------+
  8. | +ProduceResults | location | 1 | 1 | 0 | | | | |
  9. | | +----------------------------------------------------------------+----------------+------+---------+----------------+ | | |
  10. | +NodeIndexSeek | RANGE INDEX location:Location(name) WHERE name = $autostring_0 | 1 | 1 | 2 | 120 | 2/1 | 0.401 | Fused in Pipeline 0 |
  11. +-----------------+----------------------------------------------------------------+----------------+------+---------+----------------+------------------------+-----------+---------------------+
  12. Total database accesses: 2, total allocated memory: 184

怎么感觉NodeIndexSeek更快呢hhh...欢迎大佬留名

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/897579
推荐阅读
相关标签
  

闽ICP备14008679号