[BDD-S1] Indexer toutes les clés étrangères & colonnes critiques #1

Closed
opened 2025-08-25 09:40:07 +00:00 by vdorge · 2 comments
Member

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.

## 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
vdorge added the
BDD
Optimisation
Sprint 1
labels 2025-08-25 09:59:02 +00:00
vdorge added this to the Sprint 1 – Mise en place BDD milestone 2025-08-25 09:59:04 +00:00
Author
Member

Ajouter migrations/02_indexes.sql

A tester sur Docker

Ajouter migrations/02_indexes.sql A tester sur Docker
Author
Member

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.

# 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.
Sign in to join this conversation.
No description provided.