sql-optimization-patterns
Optimiser les requêtes SQL et les performances de la base de données
Également disponible depuis: wshobson
Les requêtes de base de données lentes frustrent les utilisateurs et augmentent les coûts d'infrastructure. Cette compétence fournit des modèles systématiques pour analyser les plans de requête, concevoir des index efficaces et transformer les requêtes SQL lentes en opérations haute performance.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "sql-optimization-patterns". Query with sequential scans on a 10M row table
Résultat attendu:
Analyse : L'EXPLAIN montre un Sequential Scan car aucun index n'existe sur la colonne 'created_at' utilisée dans la clause WHERE. Recommandation : CREATE INDEX idx_orders_created ON orders(created_at DESC). Amélioration attendue : Le temps de requête devrait passer de 2,3s à moins de 50ms pour les plages de dates récentes.
Utilisation de "sql-optimization-patterns". N+1 pattern loading user orders individually
Résultat attendu:
Problème : 101 requêtes exécutées (1 pour les utilisateurs + 100 pour les commandes). Solution : Remplacer par une seule requête JOIN ou utiliser le chargement par lot avec WHERE user_id IN (...). L'approche refactorisée réduit les allers-retours base de données de 99% et le temps d'exécution total de 5,2s à 120ms.
Audit de sécurité
SûrStatic analysis flagged 103 potential issues that are all false positives. The 'external_commands' findings are markdown code fence backticks in documentation, not shell execution. The 'weak cryptographic algorithm' findings reference SQL examples, not actual crypto code. The 'filesystem' finding is a PostgreSQL COPY command syntax example in documentation. This skill contains only markdown documentation with SQL optimization patterns and examples - no executable code or security risks.
Score de qualité
Ce que vous pouvez construire
Optimisation de la plateforme e-commerce
Une équipe de développement rencontre des problèmes avec la recherche de produits lente et les requêtes d'historique des commandes pendant les pics de trafic. La compétence les aide à analyser les journaux de requêtes lentes, identifier les index manquants sur les colonnes fréquemment filtrées et refactoriser les modèles N+1 dans le chargement des commandes pour réduire les temps de réponse API de secondes à millisecondes.
Performances du tableau de bord analytique
Un ingénieur des données doit accélérer les requêtes d'agrégation pour les tableaux de bord en temps réel affichant les métriques de ventes. La compétence guide l'implémentation de vues matérialisées pour les calculs coûteux, des index de couverture pour les scans d'index uniquement et des modèles GROUP BY efficaces pour atteindre des temps de rafraîchissement de tableau de bord inférieurs à la seconde.
Modernisation des applications héritées
Un développeur héritier d'une application avec des dizaines de requêtes lentes causant des erreurs de timeout. La compétence fournit une approche systématique : capturer les requêtes lentes avec pg_stat_statements, analyser les plans d'exécution, hiérarchiser les optimisations à fort impact et implémenter une indexation appropriée pour éliminer 90% des problèmes de performance sans réécriture de l'application.
Essayez ces prompts
I have a slow SQL query that takes over 5 seconds to run. Here is the query and table structure: [paste query and schema]. Can you analyze what might be causing the slowness and suggest specific indexes to create?
I ran EXPLAIN ANALYZE on my query and got this output: [paste EXPLAIN output]. Please explain what each operation means, identify the performance bottlenecks, and recommend specific optimizations.
I have a table with columns [list columns] and my most common queries are: [list queries]. What indexing strategy should I use? Consider composite indexes, partial indexes, and covering indexes where appropriate.
My application executes hundreds of similar queries in a loop: [describe pattern or show code]. This is causing performance issues. Help me refactor this using JOINs, batch loading, or other techniques to reduce the number of database round-trips.
Bonnes pratiques
- Utilisez toujours EXPLAIN ANALYZE pour comprendre l'exécution réelle de la requête avant d'optimiser
- Créez des index sur les colonnes utilisées dans les clauses WHERE, JOIN et ORDER BY - mais évitez la sur-indexation car chaque index ralentit les opérations d'écriture
- Récupérez uniquement les colonnes requises au lieu de SELECT *, et filtrez les données le plus tôt possible dans la requête
Éviter
- Utiliser des fonctions sur des colonnes indexées dans les clauses WHERE sans index fonctionnels correspondants
- La pagination avec de grandes valeurs OFFSET sur les grandes tables au lieu d'approches basées sur les curseurs
- Exécuter des requêtes dans des boucles applicatives (modèle N+1) au lieu du chargement par lot ou des JOINs
Foire aux questions
Comment identifier quelles requêtes optimiser en premier ?
L'ajout de plus d'index améliorera-t-il toujours les performances ?
Quelle est la différence entre EXPLAIN et EXPLAIN ANALYZE ?
Quand dois-je utiliser un index composite plutôt que des index séparés ?
Comment savoir si mon index est utilisé ?
Qu'est-ce que la pagination basée sur les curseurs et quand dois-je l'utiliser ?
Détails du développeur
Auteur
sickn33Licence
MIT
Dépôt
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/sql-optimization-patternsRéf
main
Structure de fichiers