Optimize Prisma queries with automated analysis, N+1 detection, index recommendations, and performance patterns based on official documentation
Analyzes Prisma queries to detect N+1 issues, missing indexes, and overfetching, then applies performance optimizations.
/plugin marketplace add fusengine/agents/plugin install fuse-ai-pilot@fusengine-pluginsAutomatically analyzes and optimizes your Prisma queries by detecting performance issues, N+1 queries, missing indexes, and proposing solutions based on official Prisma documentation 2024-2025.
Use research-expert to fetch official Prisma documentation
Goals:
Actions:
@prisma/extension-optimize extension APIsQuery Focus:
"Prisma Optimize best practices, N+1 detection, query optimization patterns,
index recommendations, select vs include, relationLoadStrategy"
Deliverable: Prisma optimization guide with verified methods
Use explore-codebase to analyze existing Prisma setup
Goals:
Actions:
schema.prisma, *.prisma filesprisma. to find queriesDeliverable: Map of Prisma queries and potential issues
After exploration, systematically analyze:
Detected Pattern:
// ❌ Anti-pattern detected
const users = await prisma.user.findMany()
users.forEach(async (user) => {
const posts = await prisma.post.findMany({ where: { authorId: user.id } })
})
Recommended Solutions:
include (Simple):
const users = await prisma.user.findMany({ include: { posts: true } })
relationLoadStrategy: "join" (Performant):
const users = await prisma.user.findMany({
relationLoadStrategy: "join",
include: { posts: true }
})
Detected Pattern:
// ❌ Queries on unindexed columns
await prisma.user.findFirst({ where: { name: "Marc" } })
Solution:
model User {
id Int @id
name String
@@index([name]) // ✅ Add index
}
Detected Pattern:
// ❌ Fetches all fields unnecessarily
await prisma.user.findMany({ include: { posts: true } })
Solution:
// ✅ Select only necessary fields
await prisma.user.findMany({
select: {
id: true,
email: true,
posts: { select: { title: true } }
}
})
If desired, install official extension:
npm install @prisma/extension-optimize
Configuration:
import { PrismaClient } from '@prisma/client'
import { withOptimize } from '@prisma/extension-optimize'
const prisma = new PrismaClient().$extends(
withOptimize({ apiKey: process.env.OPTIMIZE_API_KEY })
)
For each detected issue, propose and implement solutions:
include or relationLoadStrategyschema.prisma with @@indexselecttake/skipUse sniper to ensure zero linter errors
Goals:
Actions:
npx prisma validate
npx prisma format
npm run lint
npm run type-check
Deliverable: Optimized code with zero errors
Generate structured report with:
# Prisma Optimization Report
## 🔍 Detected Issues
- [X] N+1 Queries: 3 occurrences
- [X] Missing Indexes: 5 columns
- [X] Overfetching: 2 queries
## ✅ Applied Solutions
1. Refactored users.service.ts with `include`
2. Added indexes on User.name, Post.title
3. Optimized queries with targeted `select`
## 📈 Estimated Performance Gains
- Reduced 15 → 3 SQL queries
- Queries ~70% faster (estimated)
- Network load reduced by ~40%
## 🎯 Additional Recommendations
- Enable Prisma Optimize for monitoring
- Add performance logs in development
- Consider caching with Accelerate
Arguments: No arguments required
Example Usage:
/prisma-optimize → Complete analysis and automatic optimizationNotes:
@prisma/extension-optimize is optional but recommended