Loading

Erreur SOQL System.QueryException : Requête non sélective et type d'objet volumineux

Date de publication: Sep 24, 2021
Description
Si vous exécutez une requête SOQL sur un objet avec plus de 200 000 enregistrement en exécutant des déclencheurs, il est possible que vous receviez l’erreur « System.QueryException : Requête non sélective et type d'objet volumineux. »
Résolution
Lors de l’exécution d'une requête SOQL, l’optimiseur de requêtes Salesforce SOQL évalue les filtres utilisés par la requête pour déterminer s’il existe un filtre sélectif qui peut être utilisé pour assurer l’exécution de la requête. Lors de l’exécution des déclencheurs, s’il n’existe aucun filtre sélectif, la requête est marquée comme non-sélective et la QueryException mentionnée est renvoyée. 

Un filtre est traité comme sélectif s'il est basé sur un champ indexé, et s’il correspond de façon heuristique à moins de 10 % des enregistrements.

Dans certains cas, un correctif rapide peut consister à activer l’indicateur ID externe pour un champ utilisé dans la clause WHERE de la requête SOQL. Par exemple,

SELECT Type FROM Account WHERE Text_Field__c = '<value>'

utilise l’index sur Text_Field__c si l’indicateur ID externe de ce champ est activé et que l’optimiseur de requêtes a déterminé de façon heuristique que <value> correspond à 10 % des enregistrements maximum.

Pour activer l’indicateur ID externe pour un champ :
1) Accédez à la liste des champs de l’objet :

1.a) Dans Classic, accédez à Configuration | Créer | Objets | <nom de l’objet> | Champs
1.b) Dans Lightning Experience, accédez à Configuration | Gestionnaire d'objet | <nom de l’objet> | Champ et relations.

2) Ensuite, cliquez sur Modifier en regard du nom du champ et cochez la case ID externe.

REMARQUE : Si votre requête continue à être non-sélective même après l’activation de l’indicateur ID externe pour un champ utilisé dans la clause WHERE, consignez une requête auprès du Support pour obtenir de l’aide. Le Support déterminera si l’indexation personnalisée est possible, ou si la requête doit être modifiée pour inclure des filtres supplémentaires.

Ressources supplémentaires :
Numéro d’article de la base de connaissances

000384950

 
Chargement
Salesforce Help | Article