Loading

Errore SOQL System.QueryException: Non-selective query against large object type (Query non selettiva su tipo di oggetto di grandi dimensioni)

Data pubblicazione: Sep 24, 2021
Descrizione
Se si esegue una query SOQL su un oggetto con più di 200.000 record mentre si eseguono trigger, è possibile ricevere il messaggio di errore "System.QueryException: Non-selective query against large object type" (Query non selettiva su un tipo di oggetto di grandi dimensioni).
Risoluzione
Quando si esegue una query SOQL, l'ottimizzatore per query SOQL di Salesforce valuta i filtri utilizzati dalla query per determinare se esiste un filtro selettivo da utilizzare per guidare l'esecuzione della query. Quando si eseguono i trigger, se non viene rilevato un filtro selettivo, la query viene contrassegnata come non selettiva e viene restituita l'eccezione menzionata nella descrizione. 

Un filtro viene trattato come selettivo se è basato su un campo indicizzato e risulta in modo euristico che corrisponde a meno del 10% dei record.

In alcuni casi, una correzione rapida può essere abilitare il flag ID esterno per un campo utilizzato nella clausola WHERE della query SOQL. Ad esempio,

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

utilizzerebbe l'indice per Text_Field__c se questo campo avesse il proprio flag ID esterno abilitato e l'ottimizzatore di query avesse euristicamente determinato che <valore> corrisponderebbe a non più del 10% dei record.

Per abilitare il flag ID esterno per un campo:
1) Passare all'elenco dei campi dell'oggetto:

1.a) In Classic, andare a Imposta | Crea | Oggetti | <nome oggetto> | Campi
1.b) In Lightning Experience, andare a Imposta | Gestore oggetti | <nome oggetto> | Campi e relazioni.

2) Quindi, fare clic su Modifica accanto al nome del campo e abilitare la casella di controllo ID esterno.

NOTA: se la query SOQL continua a essere non selettiva anche dopo che è stato abilitato il flag ID esterno per un campo utilizzato nella clausola WHERE, registrare un caso con l'Assistenza per avere ulteriori istruzioni. L'Assistenza determinerà se esistono candidati per l'indicizzazione personalizzata o se la query deve essere modificata per includere filtri aggiuntivi.

Risorse aggiuntive:
Numero articolo Knowledge

000384950

 
Caricamento
Salesforce Help | Article