-- ============================================================ -- 02_indexes.sql — Indexes pour améliorer les perfs -- ============================================================ -- =========================================== -- Messages (par dossier + tri par date) -- Utilisé dans verify.sql (EXPLAIN + ORDER BY cree_le) -- =========================================== CREATE INDEX IF NOT EXISTS idx_messages_id_dossier_cree_le ON messages (id_dossier, cree_le DESC); -- =========================================== -- Evenements (filtrés par enfant + date) -- Utilisé dans verify.sql (WHERE id_enfant AND date_debut >= ...) -- =========================================== CREATE INDEX IF NOT EXISTS idx_evenements_id_enfant_date_debut ON evenements (id_enfant, date_debut DESC); -- =========================================== -- Notifications (par utilisateur + lues/non lues + tri par date) -- Utilisé dans verify.sql (WHERE id_utilisateur AND lu=false ORDER BY cree_le DESC) -- =========================================== CREATE INDEX IF NOT EXISTS idx_notifications_user_lu_cree_le ON notifications (id_utilisateur, lu, cree_le DESC); -- =========================================== -- Dossiers (filtrés par parent + enfant + statut + tri par date) -- Utilisé dans verify.sql -- =========================================== CREATE INDEX IF NOT EXISTS idx_dossiers_id_parent_enfant_statut_cree_le ON dossiers (id_parent, id_enfant, statut, cree_le DESC); -- =========================================== -- Contrats (lookup par dossier unique) -- =========================================== CREATE UNIQUE INDEX IF NOT EXISTS idx_contrats_id_dossier ON contrats (id_dossier); -- =========================================== -- JSONB indexes (si filtres fréquents sur planning/planning_souhaite) -- Exemple dans verify.sql : dossiers.planning_souhaite @> ... -- =========================================== CREATE INDEX IF NOT EXISTS idx_dossiers_planning_souhaite_gin ON dossiers USING gin (planning_souhaite jsonb_path_ops); CREATE INDEX IF NOT EXISTS idx_contrats_planning_gin ON contrats USING gin (planning jsonb_path_ops); -- =========================================== -- Sanity check : validation des emails uniques -- Déjà couvert par UNIQUE dans la table utilisateurs -- =========================================== -- =========================================== -- Bonus : accélérer les jointures fréquentes -- (utilisateurs.id, enfants.id, parents.id_utilisateur sont PK → déjà indexées automatiquement) -- ===========================================