sql-pro
jeffallan/claude-skills
Optimise les requêtes SQL, conçoit des schémas de base de données et résout les problèmes de performances. À utiliser lorsqu'un utilisateur se demande pourquoi sa requête est lente, a besoin d'aide pour rédiger des jointures ou des agrégations complexes, signale des problèmes de performances de la base de données, ou souhaite concevoir ou migrer un schéma. À utiliser pour les requêtes complexes, les fonctions de fenêtre, les CTE, les stratégies d’indexation, l’analyse des plans de requête, la création d’index de couverture, les requêtes récursives, l’interprétation des résultats EXPLAIN/ANALYZE, les tests de performance avant/après une requête, ou la migration de requêtes entre bases de données.
...Développer toutÀ propos sql-pro
SQL Pro est une compétence IA spécialisée conçue pour améliorer l'efficacité des requêtes de base de données, optimiser la conception des schémas et résoudre les problèmes de performances. Elle répond aux défis courants rencontrés dans les bases de données relationnelles, où les requêtes s'exécutent lentement ou sont difficiles à maintenir, en particulier lorsqu'il s'agit de jointures complexes, d'agrégations ou de grands ensembles de données. En analysant les requêtes SQL, les plans d’exécution et les stratégies d’indexation, cette compétence aide les utilisateurs à identifier les goulots d’étranglement et à mettre en œuvre les meilleures pratiques afin d’obtenir des performances de base de données plus rapides et plus prévisibles.
La compétence propose un workflow structuré qui commence par l’analyse du schéma, en évaluant les structures de la base de données, les index et les modèles de requêtes afin d’identifier précisément les contraintes de performances. Elle aide ensuite à concevoir des requêtes à l’aide de techniques avancées telles que les expressions de table communes (CTE), les fonctions de fenêtre et les stratégies de jointure appropriées. Les fonctionnalités d’optimisation comprennent l’analyse des plans d’exécution, la création d’index de couverture, l’élimination des balayages complets de tables et un affinement itératif pour atteindre les objectifs de performance. SQL Pro met également l’accent sur la vérification via les résultats de la commande `EXPLAIN ANALYZE`, garantissant ainsi que les requêtes s’exécutent efficacement et que les index sont utilisés de manière optimale. Une documentation complète sur les requêtes, la justification des index et les indicateurs de performances est fournie pour faciliter la maintenabilité et le transfert de connaissances.
SQL Pro s’adresse aux administrateurs de bases de données, aux développeurs et aux ingénieurs de données qui travaillent avec des bases de données PostgreSQL, MySQL, SQL Server ou Oracle et qui ont besoin d’une expertise en matière d’optimisation des requêtes, de migration de schémas ou d’optimisation des performances. Parmi les cas d’utilisation typiques, on peut citer l’accélération des requêtes lentes, la conception de schémas normalisés, la conversion de requêtes entre différents dialectes de bases de données, l’analyse des plans d’exécution et la mise en œuvre d’analyses complexes sans compromettre l’efficacité. Ses conseils s’avèrent particulièrement précieux dans les scénarios nécessitant des fonctionnalités SQL avancées telles que les requêtes récursives, les fonctions de fenêtre et les tests de performance, ce qui en fait un outil incontournable pour les équipes cherchant à maintenir des applications de bases de données hautement performantes et évolutives.
FAQ
Comment utiliser SQL Pro pour optimiser une requête lente ?
Fournissez la requête et les informations pertinentes sur le schéma. SQL Pro analysera les plans d’exécution, proposera des améliorations d’index et réécrira les requêtes à l’aide de modèles efficaces tels que les CTE ou les jointures d’agrégation.
Quels sont les systèmes de bases de données pris en charge par SQL Pro ?
SQL Pro prend en charge PostgreSQL, MySQL, SQL Server et Oracle, et fournit des conseils sur les différences entre ces dialectes.
SQL Pro peut-il gérer des requêtes analytiques complexes avec des fonctions de fenêtre ?
Oui. Il propose des conseils pour utiliser efficacement des fonctions de fenêtre telles que ROW_NUMBER, RANK, SUM et LAG/LEAD au sein de partitions, sans jointures sur soi-même inutiles.
Que dois-je vérifier lorsque j’utilise EXPLAIN ANALYZE avec SQL Pro ?
Les vérifications clés consistent notamment à détecter les balayages séquentiels sur les grandes tables, à comparer le nombre réel de lignes avec le nombre estimé, et à examiner les accès au tampon et les lectures afin d’identifier les index manquants ou les statistiques obsolètes.
Y a-t-il des limitations ou des prérequis pour utiliser SQL Pro ?
Les utilisateurs doivent avoir accès aux schémas de base de données et disposer de privilèges suffisants pour exécuter des requêtes et analyser les plans d’exécution. Les gains de performances dépendent d’un indexage approprié, de la structure des requêtes et des statistiques de la base de données.
SQL Pro
Core Workflow
- Schema Analysis - Review database structure, indexes, query patterns, performance bottlenecks
- Design - Create set-based operations using CTEs, window functions, appropriate joins
- Optimize - Analyze execution plans, implement covering indexes, eliminate table scans
- Verify - Run
EXPLAIN ANALYZEand confirm no sequential scans on large tables; if query does not meet sub-100ms target, iterate on index selection or query rewrite before proceeding - Document - Provide query explanations, index rationale, performance metrics
Reference Guide
Load detailed guidance based on context:
| Topic | Reference | Load When |
|---|---|---|
| Query Patterns | references/query-patterns.md | JOINs, CTEs, subqueries, recursive queries |
| Window Functions | references/window-functions.md | ROW_NUMBER, RANK, LAG/LEAD, analytics |
| Optimization | references/optimization.md | EXPLAIN plans, indexes, statistics, tuning |
| Database Design | references/database-design.md | Normalization, keys, constraints, schemas |
| Dialect Differences | references/dialect-differences.md | PostgreSQL vs MySQL vs SQL Server specifics |
Quick-Reference Examples
CTE Pattern
-- Isolate expensive subquery logic for reuse and readabilityWITH ranked_orders AS ( SELECT customer_id, order_id, total_amount, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC) AS rn FROM orders WHERE status = 'completed' -- filter early, before the join)SELECT customer_id, order_id, total_amountFROM ranked_ordersWHERE rn = 1; -- latest completed order per customer
Window Function Pattern
-- Running total and rank within partition — no self-join requiredSELECT department_id, employee_id, salary, SUM(salary) OVER (PARTITION BY department_id ORDER BY hire_date) AS running_payroll, RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS salary_rankFROM employees;
EXPLAIN ANALYZE Interpretation
-- PostgreSQL: always use ANALYZE to see actual row counts vs. estimatesEXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)SELECT *FROM orders oJOIN customers c ON c.id = o.customer_idWHERE o.created_at > NOW() - INTERVAL '30 days';
Key things to check in the output:
- Seq Scan on large table → add or fix an index
- actual rows ≫ estimated rows → run
ANALYZE <table>to refresh statistics - Buffers: shared hit vs read → high
readcount signals missing cache / index
Before / After Optimization Example
-- BEFORE: correlated subquery, one execution per row (slow)SELECT order_id, (SELECT SUM(quantity) FROM order_items oi WHERE oi.order_id = o.id) AS item_countFROM orders o;-- AFTER: single aggregation join (fast)SELECT o.order_id, COALESCE(agg.item_count, 0) AS item_countFROM orders oLEFT JOIN ( SELECT order_id, SUM(quantity) AS item_count FROM order_items GROUP BY order_id) agg ON agg.order_id = o.id;-- Supporting covering index (includes all columns touched by the query)CREATE INDEX idx_order_items_order_qty ON order_items (order_id) INCLUDE (quantity);
Constraints
MUST DO
- Analyze execution plans before recommending optimizations
- Use set-based operations over row-by-row processing
- Apply filtering early in query execution (before joins where possible)
- Use EXISTS over COUNT for existence checks
- Handle NULLs explicitly in comparisons and aggregations
- Create covering indexes for frequent queries
- Test with production-scale data volumes
MUST NOT DO
- Use SELECT * in production queries
- Use cursors when set-based operations work
- Ignore platform-specific optimizations when targeting a specific dialect
- Implement solutions without considering data volume and cardinality
Output Templates
When implementing SQL solutions, provide:
- Optimized query with inline comments
- Required indexes with rationale
- Execution plan analysis
- Performance metrics (before/after)
- Platform-specific notes if applicable
Documentation
Tous les fichiers
6 fichiersInstaller sql-pro
Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
git clone https://github.com/Jeffallan/claude-skills/blob/main/skills/sql-pro/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copier





Maison
