Besoin de conseils sur le refactoring des requêtes Apex (Erreur SOQL 101)

L Voyiez 60 Points de réputation
2026-10-07T07:23:08.1533333+00:00

Nous rencontrons des problèmes avec l'échec de nos traitements par lots (batch jobs) à cause d'une erreur "System.LimitException: Too many SOQL queries: 101", et il nous est impossible d'obtenir des directives claires sur la manière de résoudre ce problème via les canaux d'assistance standards. La documentation indique que nous devons refactoriser nos requêtes Apex pour prendre en charge la massification (bulkification) des requêtes SOQL, mais nous sommes actuellement bloqués et ne savons pas comment implémenter cela correctement dans notre code. Tout conseil serait grandement apprécié.

Windows pour les entreprises | Windows 365 Entreprise
0 commentaires Aucun commentaire

1 réponse

Trier par : Les plus récents
  1. VPHAN 45,340 Points de réputation Conseiller indépendant
    2026-10-07T09:26:42.41+00:00

    Hi L See,

    Lorsque le traitement par lots gère plusieurs enregistrements, la boucle s'exécute de manière répétée, dépassant instantanément la limite de transaction et provoquant l'échec de l'opération.

    Pour résoudre cette limitation, vous devez adapter votre code pour le traitement en masse (bulkification) en déplaçant toutes les interactions avec la base de données totalement en dehors de vos boucles d'itération. Vous devez d'abord déclarer un Set Apex et exécuter une première boucle sur vos enregistrements uniquement pour collecter leurs numéros d'identification uniques dans ce Set. Ensuite, vous exécutez une unique requête SOQL en dehors de la boucle, en utilisant la clause de liaison IN pour récupérer simultanément tous les enregistrements correspondants à partir des identifiants stockés dans votre Set. Vous devez ensuite affecter les résultats de cette requête à une Map Apex. Cette structure en mémoire permet à votre boucle de traitement final d'extraire les données associées directement depuis la Map plutôt que d'interroger à nouveau la base de données, réduisant ainsi des centaines d'appels à un seul et permettant à votre traitement par lots de s'exécuter avec succès.

    J'espère que cette réponse vous a apporté des informations utiles. Si tel est le cas, veuillez cliquer sur « accepter la réponse ». Si vous avez des questions, n'hésitez pas à laisser un commentaire.

    VPHAN

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire

Votre réponse

Les réponses peuvent être marquées comme « Acceptées » par l’auteur de la question et « Recommandées » par les modérateurs, ce qui aide les utilisateurs à savoir que la réponse a résolu le problème de l’auteur.