Static
analyzeAnalyzes a single database query and provides optimization suggestions.
Examines query patterns to identify common performance issues such as missing includes (N+1 queries), inefficient pagination, and missing filters on large tables. Returns specific, actionable recommendations for improving query performance.
Prisma model name being queried
Database operation (findMany, findFirst, etc.)
Query arguments including where, include, skip, etc.
Array of specific optimization suggestions
Static
suggestAnalyzes query patterns and suggests database indexes for performance optimization.
Examines a collection of database queries to identify frequently used fields in WHERE clauses and ORDER BY statements. Generates specific index recommendations based on usage frequency and query patterns to improve database performance.
Array of executed queries with their parameters
Array of specific database index recommendations
// Analyze query patterns for index suggestions
const queryLog = [
{ model: 'User', operation: 'findMany', args: { where: { email: 'user1@example.com' } } },
{ model: 'User', operation: 'findMany', args: { where: { email: 'user2@example.com' } } },
{ model: 'Course', operation: 'findMany', args: { orderBy: { createdAt: 'desc' } } },
// ... more queries
];
const suggestions = QueryOptimizer.suggestIndexes(queryLog);
// Returns: ["Consider adding index on User.email (used 15 times)", "Consider adding index on Course.createdAt_sort (used 12 times)"]
// Use with query logging middleware
const queryLog = [];
prisma.$use(async (params, next) => {
queryLog.push({ model: params.model, operation: params.action, args: params.args });
return next(params);
});
// Periodically analyze and suggest indexes
setInterval(() => {
const suggestions = QueryOptimizer.suggestIndexes(queryLog);
suggestions.forEach(suggestion => logger.info(`Index suggestion: ${suggestion}`));
}, 3600000); // Every hour
Database query optimization utility providing analysis and recommendations.
Static utility class that analyzes Prisma database queries and provides specific optimization suggestions including N+1 query prevention, pagination improvements, and indexing recommendations. Helps developers identify and resolve common database performance issues before they impact production systems.
Example
Example