搜索在 neo4j 中是如何工作的?
How the search works in neo4j?
如果我们想使用 neo4j
中的 personName
查找一个人的详细信息,我们需要遍历 label
person
中的所有 nodes
].但是在 relational database
中,我们可以通过转到 person table
并找到记录来完成。那么,这种搜索在 neo4j
中是如何进行的?我是说
1) 它是否首先找到具有 label
person
的所有节点,然后在那些 nodes
中搜索以与 personName
匹配
或
2) 搜索遇到的每个 node
,如果 label
是 person
,则搜索 personName
。如果不匹配则转到另一个 node
等等..
如果标签 :Person
和 属性 personName
(CREATE INDEX ON :Person(personName)
) 上有模式索引,则以下密码语句将通过简单的索引查找完成:
MATCH (n:Person{personName:'John'}) RETURN n
如果索引不存在,Neo4j 将迭代所有具有 Person
标签的节点,并通过它们的 属性 过滤它们(这在某种程度上与完整的 table 扫描相当在关系世界中)。
如果我们想使用 neo4j
中的 personName
查找一个人的详细信息,我们需要遍历 label
person
中的所有 nodes
].但是在 relational database
中,我们可以通过转到 person table
并找到记录来完成。那么,这种搜索在 neo4j
中是如何进行的?我是说
1) 它是否首先找到具有 label
person
的所有节点,然后在那些 nodes
中搜索以与 personName
或
2) 搜索遇到的每个 node
,如果 label
是 person
,则搜索 personName
。如果不匹配则转到另一个 node
等等..
如果标签 :Person
和 属性 personName
(CREATE INDEX ON :Person(personName)
) 上有模式索引,则以下密码语句将通过简单的索引查找完成:
MATCH (n:Person{personName:'John'}) RETURN n
如果索引不存在,Neo4j 将迭代所有具有 Person
标签的节点,并通过它们的 属性 过滤它们(这在某种程度上与完整的 table 扫描相当在关系世界中)。