[BDD-S1] Indexer toutes les clés étrangères & colonnes critiques #1
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description
Ajouter les index manquants pour améliorer les perfs sur les FK et colonnes filtrées fréquemment.
Tâches
Créer 02_indexes.sql avec index sur :
assistantes_maternelles.id_utilisateur
parents.id_utilisateur, parents.id_co_parent
enfants_parents(id_parent, id_enfant) (PK ok mais ajouter index individuels si besoin)
dossiers.id_parent, dossiers.id_enfant, dossiers.statut
messages.id_dossier, messages.id_expediteur, messages.cree_le
contrats.id_dossier (unique déjà indexé automatiquement, vérifier)
avenants_contrats.id_contrat, avenants_contrats.initie_par, avenants_contrats.cree_le
evenements.id_enfant, evenements.id_am, evenements.id_parent, evenements.cree_par, evenements.date_debut
signalements_bugs.id_utilisateur
uploads.id_utilisateur
notifications.id_utilisateur, notifications.lu, notifications.cree_le
validations.id_utilisateur, validations.statut, validations.cree_le
Critères d’acceptation
02_indexes.sql appliqué sans erreur.
Plans d’exécution montrent l’usage des index sur requêtes typiques (SELECT par FK).
Document liste des index ajoutés.
Ajouter migrations/02_indexes.sql
A tester sur Docker
Checklist de vérification rapide
Création OK
\dt
\di+ idx_* -- lister les index
Plans d’exécution (exemples)
EXPLAIN ANALYZE
SELECT * FROM messages WHERE id_dossier = '...' ORDER BY cree_le DESC LIMIT 20;
EXPLAIN ANALYZE
SELECT * FROM evenements WHERE id_enfant = '...' AND date_debut >= now() - interval '30 days';
EXPLAIN ANALYZE
SELECT * FROM notifications WHERE id_utilisateur = '...' AND lu = false ORDER BY cree_le DESC;
Pas d’index redondants
contrats(id_dossier) est déjà unique → pas besoin d’un index en plus.
Optionnels à activer plus tard (commentés dans le script) :
GIN sur JSONB si vous faites des requêtes @> (planning).
Index partiel sur notifications non lues.