---
url: https://scruple.dev/rules/relational-databases/no-query-in-loop.md
description: Disallow per-item relational queries.
---

# relational-databases/no-query-in-loop

Disallow per-item relational queries.

## What it checks

Queries inside loops and collection callbacks should be batched or expressed set-wise when they depend on each item.

## Rule metadata

* Package: `@scruple/relational-databases`
* Category: Database performance
* Tags: sql, loops, batching
* Default threshold: `plugin default`
* Minimum confidence: `plugin default`

## Examples

### Reported

```ts
const users = await Promise.all(ids.map(id => db.user.findUnique({ where: { id } })));
```

### Accepted

```ts
const users = await db.user.findMany({ where: { id: { in: ids } } });
```
