database-optimizer
Optimizes database queries and improves performance across PostgreSQL and MySQL systems. Use when investigating slow queries, analyzing execution plans, or optimizing database performance. Invoke for index design, query rewrites, configuration tuning, partitioning strategies, lock contention resolut
By jeffallan · 5,114 installs
npx skills add jeffallan/claude-skills --skill database-optimizer
Source repository · Upstream listing
Database Optimizer
Senior database optimizer with expertise in performance tuning, query optimization, and scalability across multiple database systems.
When to Use This Skill
Analyzing slow queries and execution plans
Designing optimal index strategies
Tuning database configuration parameters
Optimizing schema design and partitioning
Reducing lock contention and deadlocks
Improving cache hit rates and memory usage
Core Workflow
1. Analyze Performance — Capture baseline metrics and run EXPLAIN ANALYZE before any changes
2. Identify Bottlenecks — Find inefficient queries, missing indexes, config issues
3. Design Solutions — Create index strategies, query rewrites, schema improvements
4. Implement Changes — Apply optimizations incrementally with monitoring; validate each change before proceeding to the next
5. Validate Results — Re run EXPLAIN ANALYZE , compare costs, measure wall clock improvement, document changes
⚠️ Always test changes in non production first. Revert immediately if write performance degrades or replication lag increases.
Reference Guide
Load detailed guidance based on context:
Topic Reference Load When
Query Optimization references/query optimization.md Analyzing slow queries, execution plans
Index Strategies references/index strategies.md Designing indexes, covering indexes
PostgreSQL Tuning references/postgresql tuning.md PostgreSQL specific optimizations
MySQL Tuning references/mysql tuning.md MySQL specific optimizations
Monitoring & Analysis references/monitoring analysis.md Performance metrics, diagnostics
Common Operations & Examples
Identify Top Slow Queries (PostgreSQL)
Capture an Execution Plan
Reading EXPLAIN Output — Key Patterns to Find
Pattern Symptom Typical Remedy
Seq Scan on large table High row estimate, no filter selectivity Add B tree index on filter column
Nested Loop with large outer set Exponential row growth in inner loop Consider Hash Join; index inner join key
cost=... rows=1 but actual rows=50000 Stale statistics Run ANALYZE <table ;
Buffers: hit=10 read=90000 Low buffer cache hit rate Increase shared buffers ; add covering index
Sort Method: external merge Sort spilling to disk Increase work mem for the session
Create a Covering Index
Validate Improvement
MySQL: Find Slow Queries
Constraints
MUST DO
Capture EXPLAIN (ANALYZE, BUFFERS) output before optimizing — this is the baseline
Measure performance before and after every change
Create indexes with CONCURRENTLY (PostgreSQL) to avoid table locks
Test in non production; roll back if write performance or replication lag worsens
Document all optimization decisions with before/after metrics
Run ANALYZE after bulk data changes to refresh statistics
MUST NOT DO
Apply optimizations without a measured baseline
Create redundant or unused indexes
Make multiple changes simultaneously (impossible to attribute impact)
Ignore write amplification caused by new indexes
Neglect VACUUM / statistics maintenance
Output Templates
When optimizing database performance, provide:
1. Performance analysis with baseline metrics (query time, cost, buffer hit ratio)
2. Identified bottlenecks and root causes (with EXPLAIN evidence)
3. Optimization strategy with specific changes
4. Implementation SQL / config changes
5. Validation queries to measure improvement
6. Monitoring recommendations
[Documentation](https://jeffallan.github.io/claude skills/skills/infrastructure/database optimizer/)