匹配两个单独节点的最有效方法

时间:2017-08-01 14:57:19

标签: neo4j cypher

我需要匹配CSV中行的两个特定节点。以下是示例CSV中的一个块: Example csv

基本上,我需要连接每对名字。我的密码查询是这样的更好:

LOAD CSV WITH HEADERS FROM "file.csv" AS row 
MATCH (P1:Person {name:row.name1}),(P2:Person {name:row.name2}) 
CREATE (P1)-[:knows]-(P2)

或者这个:

LOAD CSV WITH HEADERS FROM "file.csv" AS row 
MATCH (P1:Person),(P2:Person) WHERE P1.name = row.name1 AND P2.name = row.name2 
CREATE (P1)-[:knows]-(P2)

它们似乎在非常小的(~100个节点)数据上工作得很好,但是对于非常大量的数据哪个会更快?有显着差异吗?

1 个答案:

答案 0 :(得分:0)

看看:

加载初始数据集:

CREATE (:Person {name:'Jon'})
CREATE (:Person {name:'Doe'})

查询的PROFILE结果

PROFILE MATCH (person:Person {name:'Jon'}) RETURN person

PROFILE MATCH (person:Person) WHERE person.name='Jon' RETURN person

是相同的:

PROFILE result

即:两个查询在执行时完全相同。两个查询都将转换为相同的执行计划。这些查询在运行少量或大量数据时没有区别。