Entradas por lotes mediante UNWIND en lugar de instrucciones individuales
Siempre que sea necesario ejecutar la misma consulta para diferentes entradas, en lugar de ejecutar una consulta por cada entrada, sería mucho más eficaz ejecutar una consulta para un lote de entradas.
Si desea fusionar un conjunto de nodos, una opción es ejecutar una consulta merge por cada entrada:
MERGE (n:Person {`~id`: $id}) SET n.name = $name, n.age = $age, n.employer = $employer
Con los parámetros:
params = {id: '1', name: 'john', age: 25, employer: 'Amazon'}
La consulta anterior debe ejecutarse para cada entrada. Aunque este enfoque funciona, puede requerir la ejecución de muchas consultas para un conjunto grande de entradas. En este escenario, el procesamiento por lotes puede ayudar a reducir el número de consultas ejecutadas en el servidor, así como a mejorar el rendimiento general.
Use el siguiente patrón:
UNWIND $persons as person MERGE (n:Person {`~id`: person.id}) SET n += person
Con los parámetros:
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'}...]}
Se recomienda probar con diferentes tamaños de lotes para determinar cuál funciona mejor para la carga de trabajo.