| name | query-optimize |
| description | Optimizes database queries - adds indexes, rewrites N+1s, batches requests |
| argument-hint | ["file-path"] |
| user-invocable | true |
| allowed-tools | Read Grep Glob Edit |
| effort | medium |
Query Optimization
Target: $1 (or scan src/ for all DB interactions)
- Find all database queries:
grep -rn "\.find\|\.findMany\|\.query\|\.select\|db\.\|prisma\.\|knex\." ${1:-src/} --include="*.ts" | head -40
- Check for N+1 patterns:
for (const user of users) {
user.posts = await db.posts.findMany({ where: { userId: user.id } })
}
const users = await db.users.findMany({ include: { posts: true } })
- Check for missing
select (over-fetching):
await db.users.findMany()
await db.users.findMany({ select: { id: true, name: true, email: true } })
-
Propose missing indexes for frequently-filtered columns.
-
Show before/after for each optimization. Apply on confirmation.