postgres-best-practices
Optimiser les requêtes et schémas PostgreSQL
Vous rencontrez des problèmes de lenteur avec vos requêtes de base de données et de mauvaises performances ? Cette compétence fournit des règles d'optimisation PostgreSQL éprouvées par Supabase avec des exemples SQL concrets et des améliorations de performances mesurables.
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 "postgres-best-practices". Cette requête prend 5 secondes sur 100k lignes : SELECT * FROM orders WHERE customer_id = 42 AND status = 'pending'
Résultat attendu:
Créez un index composite : CREATE INDEX idx_orders_customer_status ON orders (customer_id, status). Cela change le plan d'exécution d'un scan séquentiel à un scan d'index, réduisant le temps de requête à moins de 10ms. L'ordre des colonnes est important : placez le filtre d'égalité (customer_id) avant le filtre status pour une utilisation optimale de l'index.
Utilisation de "postgres-best-practices". Comment empêcher les requêtes N+1 lors de la récupération des utilisateurs avec leurs données de profil ?
Résultat attendu:
Remplacez les requêtes individuelles par un JOIN : SELECT u.*, p.bio, p.avatar_url FROM users u LEFT JOIN user_profiles p ON p.user_id = u.id. Ajoutez un index sur user_profiles(user_id) pour des recherches rapides. Cela réduit 101 requêtes (1 pour les utilisateurs + 100 pour les profils) à une seule requête.
Audit de sécurité
SûrThis skill contains educational documentation for PostgreSQL best practices from Supabase. All 711 static analysis findings are false positives: the 'external_commands' detections are SQL code blocks in markdown documentation (not shell commands), 'network' URLs are reference links to postgresql.org and supabase.com, 'scripts' findings are SQL WITH clauses (CTEs), and 'crypto' warnings are text pattern matches in documentation. No executable code or security risks present.
Score de qualité
Ce que vous pouvez construire
Développeur backend optimisant les requêtes lentes
Identifier les index manquants, corriger les motifs N+1 et appliquer des techniques d'optimisation de requêtes pour réduire les temps de réponse de plusieurs secondes à quelques millisecondes.
Architecte de base de données concevant de nouveaux schémas
Appliquer les meilleures pratiques pour les types de données, les contraintes, les clés étrangères et les stratégies d'indexation lors de la conception initiale du schéma.
Ingénieur DevOps ajustant les bases de données en production
Configurer les limites de connexions, les paramètres de vacuum et la surveillance pour maintenir la santé de la base de données sous charge.
Essayez ces prompts
Examinez cette requête PostgreSQL pour détecter les problèmes de performance et suggérez des améliorations : [coller la requête]
Analysez ce schéma de table et cette charge de requêtes. Quels index dois-je créer pour des performances optimales ? Schéma : [coller le schéma], Requêtes : [coller les requêtes]
Je récupère les utilisateurs et leurs commandes avec des requêtes séparées. Montrez-moi comment réécrire cela comme un seul JOIN efficace avec une indexation appropriée.
Créez une politique Row-Level Security pour un SaaS multi-tenant où les utilisateurs ne peuvent accéder qu'aux données appartenant à leur organisation. Structure de table : [coller le schéma]
Bonnes pratiques
- Toujours ajouter des index sur les colonnes WHERE, JOIN et ORDER BY
- Utiliser EXPLAIN ANALYZE pour vérifier les plans d'exécution des requêtes avant le déploiement
- Implémenter le pool de connexions pour prévenir l'épuisement de la base de données
Éviter
- Exécuter des requêtes non indexées sur de grandes tables provoquant des scans séquentiels
- Récupérer toutes les colonnes avec SELECT * au lieu de champs spécifiques
- Utiliser LIKE avec des caractères génériques en début de chaîne, ce qui empêche l'utilisation des index
Foire aux questions
Comment savoir quelles colonnes doivent être indexées ?
Qu'est-ce que N+1 et comment le corriger ?
Quand dois-je utiliser des index partiels ?
Comment fonctionne Row-Level Security ?
Quelle taille de pool de connexions dois-je utiliser ?
Pourquoi mes requêtes sont-elles lentes après avoir ajouté des index ?
Détails du développeur
Auteur
sickn33Licence
MIT
Dépôt
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/postgres-best-practicesRéf
main
Structure de fichiers