Plans d’exécution montrent l’usage des index sur requêtes typiques (SELECT par FK).
Document liste des index ajoutés.
## 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.
vdorge
added this to the P'titsPas-Ynov project 2025-08-25 09:40:20 +00:00
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.
# 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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.