debugging-orm-queries

majiayu000's avatarfrom majiayu000

Converts ORM calls to raw SQL and analyzes query performance. Detects N+1 queries, missing indexes, and other anti-patterns. Use when debugging slow queries, tracing ORM-generated SQL, or optimizing database performance for Sequelize, Prisma, TypeORM (Node.js), GORM, sqlc, sqlx, ent (Go), or SQLAlchemy, Django ORM, Peewee (Python).

⭐5stars🔀1forks📁View on GitHub🕐Updated Jan 11, 2026

When & Why to Use This Skill

This Claude skill empowers developers to optimize database performance by seamlessly converting ORM calls to raw SQL and identifying critical anti-patterns. It specializes in detecting N+1 queries, missing indexes, and inefficient joins across multiple ecosystems including Node.js, Go, and Python, ensuring faster application response times and cleaner database interactions.

Use Cases

  • Detecting and resolving N+1 query problems in complex object relationships within Django, SQLAlchemy, or Sequelize to reduce database overhead.
  • Converting abstract ORM methods into formatted raw SQL to perform deep-dive performance analysis using EXPLAIN ANALYZE for PostgreSQL or MySQL.
  • Auditing application logs to identify missing database indexes and redundant queries that cause latency in production environments.
  • Simplifying the debugging of complex database migrations and query logic by tracing ORM-generated SQL back to the source code across Node.js, Go, and Python frameworks.
namedebugging-orm-queries
descriptionConverts ORM calls to raw SQL and analyzes query performance. Detects N+1 queries, missing indexes, and other anti-patterns. Use when debugging slow queries, tracing ORM-generated SQL, or optimizing database performance for Sequelize, Prisma, TypeORM (Node.js), GORM, sqlc, sqlx, ent (Go), or SQLAlchemy, Django ORM, Peewee (Python).

Debugging ORM Queries

References

Language ORMs Reference
Node.js Sequelize, Prisma, TypeORM references/nodejs.md
Go GORM, sqlc, sqlx, ent references/golang.md
Python SQLAlchemy, Django, Peewee references/python.md
Anti-patterns N+1, indexes, pagination references/anti_patterns.md

Scripts

# Pretty-print SQL
python scripts/sql_formatter.py "SELECT..."

# Detect N+1, missing WHERE, duplicates from log file
python scripts/query_analyzer.py queries.log [--json]

# Parse EXPLAIN output (PostgreSQL or MySQL)
psql -c "EXPLAIN ANALYZE ..." | python scripts/explain_parser.py --postgres
mysql -e "EXPLAIN FORMAT=JSON ..." | python scripts/explain_parser.py --mysql

# Node.js request-scoped query tracking (see script for setup)
# Integrates with Sequelize, Prisma, TypeORM

Quick Patterns

Enable logging: Check reference for ORM-specific config (usually logging: true or echo=True)

ORM → SQL: Enable logging, run query, capture output

SQL → ORM: Map clauses to methods:

  • SELECT columns → specify fields/attributes
  • WHERE → where/filter with operators
  • JOIN → include/preload/prefetch_related
  • ORDER BY → order/orderBy
  • LIMIT/OFFSET → limit/offset or cursor-based

Performance issues: Run query_analyzer.py on logs, check anti_patterns.md for solutions