Index Odoo sur :
x_status, x_scheduled_at, x_channel, x_event_type
→ pour que les batchs n8n restent rapides.
Pourquoi indexer ces champs ?
Sur un modèle comme x_synergia_notification qui peut vite monter à des centaines de milliers de lignes, les batchs n8n vont faire en boucle des recherches du type :
- “toutes les notifs pending à envoyer maintenant ou avant maintenant, par canal X et type Y”.
Sans index, chaque requête = scan complet de la table → ça rame, surtout en SaaS.
D’où l’intérêt d’indexer :
- x_status
- x_scheduled_at
- x_channel
- x_event_type
🔹 Concrètement dans Odoo (via Studio)
Dans Odoo Studio, pour chaque champ :
- Ouvrir le modèle x_synergia_notification.
- Cliquer sur le champ (ex. x_status).
- Onglet Propriétés techniques.
- Cocher “Indexé” (ou équivalent selon version).
À faire pour :
- x_status (sélection)
- x_scheduled_at (datetime)
- x_channel (sélection)
- x_event_type (sélection)
👉 Même si Odoo ne fait pas de composite index (multi-colonne) via Studio, quatre index simples sur ces colonnes suffisent pour 99 % des requêtes qu’on fera depuis n8n.
🔹 Exemple de requête côté n8n / API Odoo
Typiquement, votre node “HTTP Request → Odoo” cherchera :
{ "model": "x_synergia_notification", "method": "search_read", "args": [ [ ["x_status", "=", "pending"], ["x_scheduled_at", "<=", "2025-12-08 10:00:00"], ["x_channel", "in", ["sms", "rcs"]], ["x_event_type", "in", ["rappel_rdv", "prevention"]] ], ["id", "x_status", "x_scheduled_at", "x_channel", "x_event_type", "x_payload"], 0, 100, "x_scheduled_at" ] }
Grâce aux index sur ces champs, Odoo/PostgreSQL peut :
- filtrer d’abord sur x_status + x_scheduled_at,
- affiner avec x_channel + x_event_type,
- renvoyer les 100 prochaines notifs à traiter sans scanner toute la table.