neo4j 版本 2.3.1
索引存在于Stoptime.stop_sequence
和上Stoptime.key
。
Stoptime.stop_sequence
是数字。
图形:
(Stoptime)-[:PART_OF]->(Trip)
陈述:
//USING PERIODIC COMMIT 1000
PROFILE
load csv with headers from "file:///path/to/csv" as csv with csv limit 0
match (s1:Stoptime{key:(csv.trip_id + csv.stop_id)})-[:PART_OF]->(trip:Trip), (s2:Stoptime)-[:PART_OF]->(trip)
where s2.stop_sequence = s1.stop_sequence + 1
create (s1)-[:PRECEDES]->(s2);
生成的配置文件如下所示:
+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| Operator | Rows | DB Hits | Identifiers | Other |
+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +EmptyResult | 0 | 0 | | |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +UpdateGraph | 0 | 0 | anon[188], anon[227], anon[311], csv, s1, s2, trip | CreateRelationship |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Eager | 0 | 0 | anon[188], anon[227], csv, s1, s2, trip | |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Filter | 0 | 0 | anon[188], anon[227], csv, s1, s2, trip | Ands(trip:Trip, s2:Stoptime, s2.stop_sequence == Add(s1.stop_sequence,{ AUTOINT0}), NOT(anon[188] == anon[227])) |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +SimplePatternMatcher | 0 | 0 | anon[188], anon[227], csv, s1, s2, trip | |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +SchemaIndex | 0 | 0 | csv, s1 | Add(csv.trip_id,csv.stop_id); :Stoptime(key) |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +Slice | 0 | 0 | csv | Literal(0) |
| | +------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
| +LoadCSV | 1 | 0 | csv | |
+-----------------------+------+---------+----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------+
在这种情况下,如何将 MATCH + WHERE 与 CREATE 分开以删除 EAGER?
PRECEDES
在将预先构建的关系填充到图表中之前,我唯一的方法是将 CSV 预处理成一个新的,其中定义了关系吗?或者有什么方法可以用更好的 MATCH 建立连续的关系。