sql-optimization-patterns Skill
✓ VerifiziertOptimiere die Datenbankperformance durch die Analyse von Query-Plänen, Indexing-Strategien und die Implementierung effizienter SQL-Patterns.
- GitHub Stars
- 42.413
- Dateien
- 2
- Letzter Commit
- 9. Nov. 2026
- Lizenz
- MIT
- Erlaubte Tools
- —
Was macht der sql-optimization-patterns Skill?
sql-optimization-patterns ist ein Agent Skill. Optimiere die Datenbankperformance durch die Analyse von Query-Plänen, Indexing-Strategien und die Implementierung effizienter SQL-Patterns.
Zusammenfassung erzeugt aus der SKILL.md des Skills.
Über den sql-optimization-patterns skill
Die Hauptfunktion dieses Skills ist die Verbesserung der Datenbankperformance und das Eliminieren langsamer Queries. Entwickler nutzen ihn, um träge Operationen zu debuggen, effiziente Datenbank-Schemas zu entwerfen und die gesamte Datenbanklast oder Kosten zu senken. Er ist besonders nützlich, wenn ein Agent Ausführungspläne analysieren oder N+1-Query-Probleme lösen muss, um die Antwortzeiten der Anwendung zu verbessern.
Ein Agent sollte diesen Skill laden, wenn er damit beauftragt wird, PostgreSQL EXPLAIN- oder EXPLAIN ANALYZE-Outputs zu interpretieren, um Probleme wie Seq Scans oder ineffiziente Join-Methoden zu identifizieren. Er bietet spezifische Strategien für die Implementierung verschiedener Index-Typen, einschließlich B-Tree, Hash, GIN, GiST und BRIN. Der Skill deckt zudem praktische Query-Patterns ab, wie das Vermeiden von SELECT * und die Optimierung von JOIN-Operationen durch das Filtern von Daten vor dem Joinen von Tabellen.
Über das Schreiben von Queries hinaus unterstützt der Skill bei Datenbank-Wartungsaufgaben wie dem Ausführen von ANALYZE- oder VACUUM-Befehlen. Er hilft dabei, häufige Fallstricke wie Over-Indexing oder implizite Typkonvertierungen zu identifizieren, die die Nutzung von Indizes verhindern. Durch das Monitoring von Statistiken über System-Views ermöglicht er die Identifizierung fehlender oder ungenutzter Indizes, um die Skalierbarkeit bei wachsenden Datensätzen aufrechtzuerhalten.
Was ein agent damit machen kann
- 1Query-Ausführungspläne analysierenUntersuche PostgreSQL EXPLAIN-Outputs, um langsame Full Table Scans zu identifizieren und Query-Kosten zu schätzen.
- 2Spezialisierte Indexing-Strategien implementierenErstelle spezifische Index-Typen wie GIN für JSONB-Daten oder B-Tree für Range-Queries, um den Datenabruf zu beschleunigen.
- 3Ineffiziente SQL-Patterns refactorenSchreibe Queries um, um unnötiges Abrufen von Spalten zu vermeiden und die Join-Logik für eine bessere Performance zu optimieren.
- 4Wartungsbedarf der Datenbank identifizierenFinde ungenutzte oder fehlende Indizes durch Abfragen von System-Statistiken, um den Write-Overhead zu reduzieren und die Lesegeschwindigkeit zu verbessern.
Geschrieben basierend auf dem SKILL.md des skills. Jeder use case wurde gegen ein zitat daraus geprüft.
So installierst du den sql-optimization-patterns Skill
Jeder Befehl kopiert den Skill-Ordner in das Skills-Verzeichnis des Clients. Starte den Client neu oder beginne eine neue Session, um ihn zu laden.Den sql-optimization-patterns Skill in Plugin installieren
/plugin marketplace add wshobson/agents /plugin install developer-essentials@claude-code-workflows
Den sql-optimization-patterns Skill in Claude Code installieren
~/.claude/skills/sql-optimization-patterns/SKILL.md
$ npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns ~/.claude/skills/sql-optimization-patternsDen sql-optimization-patterns Skill in Claude Code (project) installieren
.claude/skills/sql-optimization-patterns/SKILL.md
$ npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns .claude/skills/sql-optimization-patternsDen sql-optimization-patterns Skill in Codex installieren
~/.agents/skills/sql-optimization-patterns/SKILL.md
$ npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns ~/.agents/skills/sql-optimization-patternsDen sql-optimization-patterns Skill in Gemini CLI installieren
~/.gemini/skills/sql-optimization-patterns/SKILL.md
$ npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns ~/.gemini/skills/sql-optimization-patternsDen sql-optimization-patterns Skill in Claude.ai installieren
npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns sql-optimization-patterns && zip -r sql-optimization-patterns.zip sql-optimization-patterns # claude.ai → Customize → Skills → + → Create skill → Upload a skill → sql-optimization-patterns.zip
Automatisierte Checks
Geluften am 13. Nov. 2026Vollständiger Bericht →Hat unsere automatischen Prüfungen bestanden. Das ist kein Sicherheitsaudit: Lesen Sie die Skripte, bevor ein Agent sie ausführt. Wie die Checks funktionieren
- Source Repository verknüpft und erreichbarwshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns is public and reachablegithub.com/wshobson/agents/tree/HEAD/plugins/developer-essen ↗Bestanden
- Open Source Lizenz (OSI)MITspdx.org/licenses/MIT.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit 2026-11-09github.com/wshobson/agents/commits ↗Bestanden
- Keine Download-und-Ausführen-Muster oder Zugangsdatendiebstahl in SkriptenNo scripts in the skill folderBestanden
- Keine versteckten Anweisungen in SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/wshobson/agents/blob/HEAD/plugins/developer-essen ↗Bestanden
- Vorab erlaubte Tools sind eingeschränktNo pre-approved tools; the agent asks before using onegithub.com/wshobson/agents/blob/HEAD/plugins/developer-essen ↗Bestanden
SKILL.md
Auf GitHub ansehenSQL Optimization Patterns
Transform slow database queries into lightning-fast operations through systematic optimization, proper indexing, and query plan analysis.
When to Use This Skill
- Debugging slow-running queries
- Designing performant database schemas
- Optimizing application response times
- Reducing database load and costs
- Improving scalability for growing datasets
- Analyzing EXPLAIN query plans
- Implementing efficient indexes
- Resolving N+1 query problems
Core Concepts
1. Query Execution Plans (EXPLAIN)
Understanding EXPLAIN output is fundamental to optimization.
PostgreSQL EXPLAIN:
-- Basic explain
EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';
-- With actual execution stats
EXPLAIN ANALYZE
SELECT * FROM users WHERE email = 'user@example.com';
-- Verbose output with more details
EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
SELECT u.*, o.order_total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.created_at > NOW() - INTERVAL '30 days';
Key Metrics to Watch:
- Seq Scan: Full table scan (usually slow for large tables)
- Index Scan: Using index (good)
- Index Only Scan: Using index without touching table (best)
- Nested Loop: Join method (okay for small datasets)
- Hash Join: Join method (good for larger datasets)
- Merge Join: Join method (good for sorted data)
- Cost: Estimated query cost (lower is better)
- Rows: Estimated rows returned
- Actual Time: Real execution time
2. Index Strategies
Indexes are the most powerful optimization tool.
Index Types:
- B-Tree: Default, good for equality and range queries
- Hash: Only for equality (=) comparisons
- GIN: Full-text search, array queries, JSONB
- GiST: Geometric data, full-text search
- BRIN: Block Range INdex for very large tables with correlation
-- Standard B-Tree index
CREATE INDEX idx_users_email ON users(email);
-- Composite index (order matters!)
CREATE INDEX idx_orders_user_status ON orders(user_id, status);
-- Partial index (index subset of rows)
CREATE INDEX idx_active_users ON users(email)
WHERE status = 'active';
-- Expression index
CREATE INDEX idx_users_lower_email ON users(LOWER(email));
-- Covering index (include additional columns)
CREATE INDEX idx_users_email_covering ON users(email)
INCLUDE (name, created_at);
-- Full-text search index
CREATE INDEX idx_posts_search ON posts
USING GIN(to_tsvector('english', title || ' ' || body));
-- JSONB index
CREATE INDEX idx_metadata ON events USING GIN(metadata);
3. Query Optimization Patterns
Avoid SELECT *:
-- Bad: Fetches unnecessary columns
SELECT * FROM users WHERE id = 123;
-- Good: Fetch only what you need
SELECT id, email, name FROM users WHERE id = 123;
Use WHERE Clause Efficiently:
-- Bad: Function prevents index usage
SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
-- Good: Create functional index or use exact match
CREATE INDEX idx_users_email_lower ON users(LOWER(email));
-- Then:
SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
-- Or store normalized data
SELECT * FROM users WHERE email = 'user@example.com';
Optimize JOINs:
-- Bad: Cartesian product then filter
SELECT u.name, o.total
FROM users u, orders o
WHERE u.id = o.user_id AND u.created_at > '2024-01-01';
-- Good: Filter before join
SELECT u.name, o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2024-01-01';
-- Better: Filter both tables
SELECT u.name, o.total
FROM (SELECT * FROM users WHERE created_at > '2024-01-01') u
JOIN orders o ON u.id = o.user_id;
Detailed patterns and worked examples
Detailed pattern documentation lives in references/details.md. Read that file when the navigation tier above is insufficient.
Best Practices
- Index Selectively: Too many indexes slow down writes
- Monitor Query Performance: Use slow query logs
- Keep Statistics Updated: Run ANALYZE regularly
- Use Appropriate Data Types: Smaller types = better performance
- Normalize Thoughtfully: Balance normalization vs performance
- Cache Frequently Accessed Data: Use application-level caching
- Connection Pooling: Reuse database connections
- Regular Maintenance: VACUUM, ANALYZE, rebuild indexes
-- Update statistics
ANALYZE users;
ANALYZE VERBOSE orders;
-- Vacuum (PostgreSQL)
VACUUM ANALYZE users;
VACUUM FULL users; -- Reclaim space (locks table)
-- Reindex
REINDEX INDEX idx_users_email;
REINDEX TABLE users;
Common Pitfalls
- Over-Indexing: Each index slows down INSERT/UPDATE/DELETE
- Unused Indexes: Waste space and slow writes
- Missing Indexes: Slow queries, full table scans
- Implicit Type Conversion: Prevents index usage
- OR Conditions: Can't use indexes efficiently
- LIKE with Leading Wildcard:
LIKE '%abc'can't use index - Function in WHERE: Prevents index usage unless functional index exists
Monitoring Queries
-- Find slow queries (PostgreSQL)
SELECT query, calls, total_time, mean_time
FROM pg_stat_statements
ORDER BY mean_time DESC
LIMIT 10;
-- Find missing indexes (PostgreSQL)
SELECT
schemaname,
tablename,
seq_scan,
seq_tup_read,
idx_scan,
seq_tup_read / seq_scan AS avg_seq_tup_read
FROM pg_stat_user_tables
WHERE seq_scan > 0
ORDER BY seq_tup_read DESC
LIMIT 10;
-- Find unused indexes (PostgreSQL)
SELECT
schemaname,
tablename,
indexname,
idx_scan,
idx_tup_read,
idx_tup_fetch
FROM pg_stat_user_indexes
WHERE idx_scan = 0
ORDER BY pg_relation_size(indexrelid) DESC;
Dateien in diesem Skill
2sql-optimization-patterns Skill-Fragen
Wie installiere ich den sql-optimization-patterns Skill in Claude Code?
Führe npx degit wshobson/agents/plugins/developer-essentials/skills/sql-optimization-patterns ~/.claude/skills/sql-optimization-patterns aus. Claude Code lädt Skills aus ~/.claude/skills (alle Projekte) oder .claude/skills (ein Projekt) und nutzt einen Skill, wenn seine Beschreibung zur Aufgabe passt.
Welche Clients können den sql-optimization-patterns Skill nutzen?
Jeder Client, der das Agent Skills-Format liest: Claude Code, Codex, Gemini CLI und claude.ai (als ZIP hochladen). Skripte im Skill laufen nur dort, wo der Client Codeausführung erlaubt.
Wie kann ich einen Query-Ausführungsplan in PostgreSQL analysieren?
Du kannst den EXPLAIN-Befehl nutzen, speziell EXPLAIN ANALYZE für tatsächliche Ausführungsstatistiken oder EXPLAIN (ANALYZE, BUFFERS, VERBOSE) für detailliertere Ausgaben.