Ajouter migrations/02_indexes.sql
This commit is contained in:
parent
d5c485edb0
commit
ceb54e9cda
157
migrations/02_indexes.sql
Normal file
157
migrations/02_indexes.sql
Normal file
@ -0,0 +1,157 @@
|
||||
-- =============================================
|
||||
-- 02_indexes.sql : Index FK + colonnes critiques
|
||||
-- =============================================
|
||||
|
||||
-- Recommandation : exécuter après 01_init.sql
|
||||
|
||||
-- ===========
|
||||
-- UTILISATEURS
|
||||
-- ===========
|
||||
-- Recherche par email (insensibilité à la casse pour lookup)
|
||||
CREATE INDEX IF NOT EXISTS idx_utilisateurs_lower_courriel
|
||||
ON utilisateurs (LOWER(courriel));
|
||||
|
||||
-- ===========
|
||||
-- ASSISTANTES_MATERNELLES
|
||||
-- ===========
|
||||
-- FK -> utilisateurs(id)
|
||||
CREATE INDEX IF NOT EXISTS idx_am_id_utilisateur
|
||||
ON assistantes_maternelles (id_utilisateur);
|
||||
|
||||
-- =======
|
||||
-- PARENTS
|
||||
-- =======
|
||||
-- FK -> utilisateurs(id)
|
||||
CREATE INDEX IF NOT EXISTS idx_parents_id_utilisateur
|
||||
ON parents (id_utilisateur);
|
||||
|
||||
-- Co-parent (nullable)
|
||||
CREATE INDEX IF NOT EXISTS idx_parents_id_co_parent
|
||||
ON parents (id_co_parent);
|
||||
|
||||
-- =======
|
||||
-- ENFANTS
|
||||
-- =======
|
||||
-- (souvent filtrés par statut / date_naissance ? à activer si besoin)
|
||||
-- CREATE INDEX IF NOT EXISTS idx_enfants_statut ON enfants (statut);
|
||||
-- CREATE INDEX IF NOT EXISTS idx_enfants_date_naissance ON enfants (date_naissance);
|
||||
|
||||
-- ================
|
||||
-- ENFANTS_PARENTS (N:N)
|
||||
-- ================
|
||||
-- PK composite déjà en place (id_parent, id_enfant), ajouter index individuels si jointures unilatérales fréquentes
|
||||
CREATE INDEX IF NOT EXISTS idx_enfants_parents_id_parent
|
||||
ON enfants_parents (id_parent);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_enfants_parents_id_enfant
|
||||
ON enfants_parents (id_enfant);
|
||||
|
||||
-- ========
|
||||
-- DOSSIERS
|
||||
-- ========
|
||||
-- FK -> parent / enfant
|
||||
CREATE INDEX IF NOT EXISTS idx_dossiers_id_parent
|
||||
ON dossiers (id_parent);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_dossiers_id_enfant
|
||||
ON dossiers (id_enfant);
|
||||
|
||||
-- Statut (filtrages "à traiter", "envoyé", etc.)
|
||||
CREATE INDEX IF NOT EXISTS idx_dossiers_statut
|
||||
ON dossiers (statut);
|
||||
|
||||
-- JSONB : si on fait des requêtes @> sur le planning souhaité
|
||||
-- CREATE INDEX IF NOT EXISTS idx_dossiers_planning_souhaite_gin
|
||||
-- ON dossiers USING GIN (planning_souhaite);
|
||||
|
||||
-- ========
|
||||
-- MESSAGES
|
||||
-- ========
|
||||
-- Filtrage par dossier + tri chronologique
|
||||
CREATE INDEX IF NOT EXISTS idx_messages_id_dossier_cree_le
|
||||
ON messages (id_dossier, cree_le);
|
||||
|
||||
-- Recherche par expéditeur
|
||||
CREATE INDEX IF NOT EXISTS idx_messages_id_expediteur_cree_le
|
||||
ON messages (id_expediteur, cree_le);
|
||||
|
||||
-- =========
|
||||
-- CONTRATS
|
||||
-- =========
|
||||
-- UNIQUE(id_dossier) existe déjà -> index implicite
|
||||
-- Tri / filtres fréquents
|
||||
CREATE INDEX IF NOT EXISTS idx_contrats_statut
|
||||
ON contrats (statut);
|
||||
|
||||
-- JSONB planning : activer si on requête par clé
|
||||
-- CREATE INDEX IF NOT EXISTS idx_contrats_planning_gin
|
||||
-- ON contrats USING GIN (planning);
|
||||
|
||||
-- ==================
|
||||
-- AVENANTS_CONTRATS
|
||||
-- ==================
|
||||
CREATE INDEX IF NOT EXISTS idx_avenants_contrats_id_contrat_cree_le
|
||||
ON avenants_contrats (id_contrat, cree_le);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_avenants_contrats_initie_par
|
||||
ON avenants_contrats (initie_par);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_avenants_contrats_statut
|
||||
ON avenants_contrats (statut);
|
||||
|
||||
-- =========
|
||||
-- EVENEMENTS
|
||||
-- =========
|
||||
-- Accès par enfant + période
|
||||
CREATE INDEX IF NOT EXISTS idx_evenements_id_enfant_date_debut
|
||||
ON evenements (id_enfant, date_debut);
|
||||
|
||||
-- Filtrage par auteur / AM / parent
|
||||
CREATE INDEX IF NOT EXISTS idx_evenements_cree_par
|
||||
ON evenements (cree_par);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_evenements_id_am
|
||||
ON evenements (id_am);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_evenements_id_parent
|
||||
ON evenements (id_parent);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_evenements_type
|
||||
ON evenements (type);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_evenements_statut
|
||||
ON evenements (statut);
|
||||
|
||||
-- =================
|
||||
-- SIGNALEMENTS_BUGS
|
||||
-- =================
|
||||
CREATE INDEX IF NOT EXISTS idx_signalements_bugs_id_utilisateur_cree_le
|
||||
ON signalements_bugs (id_utilisateur, cree_le);
|
||||
|
||||
-- =======
|
||||
-- UPLOADS
|
||||
-- =======
|
||||
CREATE INDEX IF NOT EXISTS idx_uploads_id_utilisateur_cree_le
|
||||
ON uploads (id_utilisateur, cree_le);
|
||||
|
||||
-- =============
|
||||
-- NOTIFICATIONS
|
||||
-- =============
|
||||
-- Requêtes fréquentes : non lues + ordre chrono
|
||||
CREATE INDEX IF NOT EXISTS idx_notifications_user_lu_cree_le
|
||||
ON notifications (id_utilisateur, lu, cree_le);
|
||||
|
||||
-- Option : index partiel pour "non lues"
|
||||
-- CREATE INDEX IF NOT EXISTS idx_notifications_non_lues
|
||||
-- ON notifications (id_utilisateur, cree_le)
|
||||
-- WHERE lu = false;
|
||||
|
||||
-- ===========
|
||||
-- VALIDATIONS
|
||||
-- ===========
|
||||
-- Requêtes par utilisateur validé, par statut et par date
|
||||
CREATE INDEX IF NOT EXISTS idx_validations_id_utilisateur_cree_le
|
||||
ON validations (id_utilisateur, cree_le);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_validations_statut
|
||||
ON validations (statut);
|
||||
Loading…
x
Reference in New Issue
Block a user