

# Batch inputs using UNWIND instead of individual statements
<a name="best-practices-content-14"></a>

 Whenever the same query needs to be executed for different inputs, instead of executing one query per input, it would be much more performant to run a query for a batch of inputs. 

 If you want to merge on a set of nodes, one option is to run a merge query per input: 

```
MERGE (n:Person {`~id`: $id})
SET n.name = $name, n.age = $age, n.employer = $employer
```

 With parameters: 

```
params = {id: '1', name: 'john', age: 25, employer: 'Amazon'}
```

 The above query needs to be executed for every input. While this approach works, it may require many queries to be executed for a large set of input. In this scenario, batching may help reduce the number of queries executed on the server, as well as improve the overall throughput. 

 Use the following pattern: 

```
UNWIND $persons as person
MERGE (n:Person {`~id`: person.id})
SET n += person
```

 With parameters: 

```
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'}...]}
```

 Experimentation with different batch sizes is recommended to determine what works best for your workload. 