对批量输入使用 UNWIND(而非单个语句)
当需要对不同的输入执行相同查询时,对批量输入运行一个查询比对每个输入执行一个查询更高效。
如果您想在一组节点上合并,可以选择对每个输入运行一个合并查询:
MERGE (n:Person {`~id`: $id}) SET n.name = $name, n.age = $age, n.employer = $employer
参数为:
params = {id: '1', name: 'john', age: 25, employer: 'Amazon'}
需要对每个输入执行上述查询。虽然这种方法行得通,但可能需要为大量输入执行许多查询。在这种情况下,批处理可能有助于减少在服务器上执行的查询数量,并提高整体吞吐量。
请使用以下模式:
UNWIND $persons as person MERGE (n:Person {`~id`: person.id}) SET n += person
参数为:
params = {persons: [{id: '1', name: 'john', age: 25, employer: 'Amazon'}, {id: '2', name: 'jack', age: 28, employer: 'Amazon'}, {id: '3', name: 'alice', age: 24, employer: 'Amazon'}...]}
建议尝试不同的批次大小,以确定哪种批次最适合您的工作负载。