lvtd-llc/skills

django-db-performance

Diagnose and improve slow Django database-backed endpoints with evidence-first profiling, query-plan review, index selection, ORM loading fixes, batching, database-side computation, materialized views, and pagination choices.

First seen Jun 21, 2026

Installation

$ npx skills add lvtd-llc/skills --skill django-db-performance

Summary

  • Diagnose and improve slow Django database-backed endpoints with evidence-first profiling, query-plan review, index selection, ORM loading fixes, batching, database-side computation, materialized views, and pagination choices.
  • Use when a Django view, API, job, report, queryset, or database query is slow and the right optimization path is not obvious.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from lvtd-llc/skills · top by installs.

npx skills add lvtd-llc/skills

Browse all from lvtd-llc/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 1
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version0.1.0
LicenseMIT
CompatibilityCodex, Claude Code, and other Agent Skills-compatible clients.
Declared agents claude-code codex
More metadata
version
0.1.0
displayName
Django DB Performance
category
Django
tags
django,database,performance,orm,profiling

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,550 B
  • docs SUMMARY.md 380 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 58 installs

SKILL.md

Django DB Performance

Use this as the orchestration skill for Django database performance work. Start with measured evidence, reproduce the slow path, and route to the smallest optimization that changes the measured bottleneck.

Core Workflow

  1. Capture the symptom.

- Identify the exact endpoint, command, task, report, or queryset. - Record current wall-clock time, query count, slow SQL, database backend, data volume, and Django version. - Keep the original request parameters or fixture that reproduces the issue.

  1. Profile before changing code.

- Use APM traces, database slow-query logs, Django Debug Toolbar, connection.queries, or targeted logging. - If the expensive query is known, use QuerySet.explain() or database EXPLAIN. - For API endpoints, profile serializers and permission checks as well as querysets.

  1. Classify the dominant problem.

- Many repeated similar queries: use django-orm-query-optimization. - One or two expensive SQL statements: use django-query-plan-reading and django-index-design. - Large memory use or long loops over querysets: use django-queryset-batch-processing. - Python loops computing counts, totals, flags, or latest related rows: use django-db-side-computation. - Slow aggregate/report query that is acceptable when stale: use django-materialized-views. - Slow or inconsistent list pages: use django-pagination-performance. - Unclear evidence: use django-query-profiling.

  1. Apply one change at a time.

- Prefer the narrowest change with a clear expected effect. - Avoid adding indexes, prefetches, or materialized views speculatively. - Confirm that the optimization helps real production-like data, not only tiny fixtures.

  1. Verify and document the result.

- Re-run the same request or command with the same parameters. - Compare query count, total DB time, wall-clock time, memory, and query plan. - Keep before/after evidence in the PR or final report.

See [diagnostic-flow.md](references/diagnostic-flow.md) for routing checklists, common symptoms, and before/after evidence templates.

Modern Django Notes

  • Prefer QuerySet.explain() for ORM query plans before dropping to raw EXPLAIN.
  • Prefer native Django/PostgreSQL migration operations such as AddIndexConcurrently over hand-written concurrent index SQL when they fit.
  • Prefer ORM expressions, Subquery, Exists, Window, GeneratedField, and db_default when they make database work explicit and portable enough.
  • Treat every backend-specific optimization as conditional on the project database. PostgreSQL patterns do not automatically apply to MySQL, MariaDB, SQLite, or Oracle.

Verification

  • Show the slow path is still functionally correct.
  • Show the measured bottleneck improved.
  • Show the optimization did not create a worse query, stale data bug, write-path regression, or memory spike.