什么是索引意味着neo4j及其如何影响性能

时间:2018-07-12 19:45:56

标签: neo4j

我有一个在rdbms中建立索引的想法,但是无法想到在neo4j中建立索引的方式以及模式索引是什么?

1 个答案:

答案 0 :(得分:2)

要引用neo4j的免费书籍Graph Databases

  

索引有助于优化查找特定节点的过程。

     

大多数   时间,当查询图表时,我们很高兴让遍历   过程发现满足我们的节点和关系   信息目标。通过遵循与特定匹配的关系   图形模式,我们遇到了有助于查询的元素   结果。但是,在某些情况下,我们需要选择   直接找出特定的节点,而不是在整个过程中发现它们   遍历。确定遍历的起始节点   例如,要求我们根据某个节点找到一个或多个特定节点   标签和属性值的组合。

同一本书还对neo4j和关系数据库进行了广泛的比较。

关于上述indexes(也称为“模式索引”)的索引:它们索引具有特定节点 label 和节点 property < / strong>组合。

还有另一种称为"manual" (or "legacy", or "explicit") indexing的索引编制机制,现在仅推荐用于特殊情况。

[更新]

作为示例,假设我们已经在:Person(firstname)上创建了一个索引,如下所示:

CREATE INDEX ON :Person(firstname);

在这种情况下,可以通过使用索引找到所需的Person节点来快速开始以下查询。找到这些节点后,neo4j可以轻松地遍历其传出的WORKS_AT关系以找到相关的Company节点:

MATCH (p:Person)-[:WORKS_AT]->(c:Company)
WHERE p.firstname = 'Karan'
RETURN p, c;

没有该索引,查询将必须:

  • 遍历所有 Person个节点以找到正确的节点,然后再遍历其传出的WORKS_AT关系,或者
  • 查找所有Company个节点,遍历其传入的WORKS_AT关系,并在关系的另一端比较每个firstname的{​​{1}}值。