Una volta abilitato nella Developer Console, è possibile accedere allo strumento Query Plan Tool nella scheda 'Editor query' della console.
Per utilizzare lo strumento Query Plan, è sufficiente inserire una query In Editor query e premere Query Plan per visualizzare tutte le operazioni di query e il costo di ciascuna per l'SOQL fornito.
Utilizzare questo strumento per controllare il piano di esecuzione per tutte le query SOQL la cui esecuzione è lenta. Lo strumento fornisce informazioni approfondite sui diversi piani e, se alcuni filtri sono indicizzati, indica il costo dell'utilizzo dell'indice rispetto all'analisi della tabella completa.
Se il costo dell'analisi della tabella è inferiore a quello dell'indice e la query genera un timeout, è necessario effettuare un'ulteriore analisi per migliorare la selettività utilizzando altri filtri oppure per verificare se nella query è presente un altro filtro selettivo non indicizzato ma candidato a esserlo.
Lo strumento Query Plan visualizza un elenco di piani disponibili utilizzabile dal Query Optimizer per la query fornita, in ordine crescente di costo.
Ciascun piano contiene informazioni relative, tra l'altro, a cardinalità, tipo di operazione, costo e tipo di sObject. Per ciascun piano è indicato un tipo di operazione principale, ad esempio indicizzazione campo o analisi tabella completa. Il piano con il costo più basso è quello utilizzato per l'esecuzione della query.
Cardinalità |
Campi |
Tipo di operazione principale |
Costo |
Cardinalità sObject |
Tipo di sObject |
|---|---|---|---|---|---|
|
Numero stimato di record restituiti dal tipo di operazione principale.
Ad esempio, numero di record restituiti se si utilizza una tabella di indici. | Campo o campi indicizzati utilizzati dal Query Optimizer. Se il tipo di operazione principale corrisponde a Indice, il valore del campo è Indice. In caso contrario, il valore del campo è null. |
Tipo di operazione principale utilizzato da Salesforce per ottimizzare la query.
| Costo della query rispetto alla soglia di selettività del Query Optimizer di Force.com. I valori maggiori di 1 indicano che la query non sarà selettiva. |
Numero approssimativo di record per l'oggetto sottoposto a query.
|
Nome dell'oggetto sottoposto a query.
|
Per ciascun piano è stabilito un valore di costo. Questo valore deriva dalle statistiche del database (DB) sulla tabella e sui valori raccolte più di recente. Il piano utilizzato sarà quello con il costo più basso. Se il costo è maggiore di 1 significa che la query non sarà selettiva.
Se la query fornita contiene un campo indicizzato nei filtri, il piano per questo campo viene visualizzato solo se si utilizza un'operazione supportata per tale campo.
Ecco un elenco di operazioni non supportate:
Lo strumento Query Plan visualizza solo le statistiche dei campi indicizzati nella sezione del piano, non i campi che possono essere indicizzati. Questo strumento non fornisce informazioni sui campi che possono essere indicizzati.
Consultare How to make my SOQL query selective (Come rendere selettive le proprie query SOQL) per determinare quali campi possono essere indicizzati.
Nei seguenti esempi sono utilizzati 2 campi indicizzati. Una casella di controllo (InActiveAcc__c) e un elenco di selezione (Account_Hierarchy__c) per l'sObject Account.
Nota: sono disponibili altre query di esempio nel post originale sul parametro relativo al feedback delle risorse di query di cui questo nuovo strumento della Developer Console rappresenta l'evoluzione.
SELECT count() FROM Account WHERE Account_Hierarchy__c = 'Parent'
Scenario: un campo indicizzato con una variabile di binding selettiva
SELECT count() FROM Account WHERE InActiveAcc__c = true AND Account_Hierarchy__c = 'Parent'
Scenario: 2 campi indicizzati, 1 selettivo
SELECT count() FROM Account WHERE InActiveAcc__c = true AND Account_Hierarchy__c != 'Parent' **NOTA: Uso di un'operazione non supportata per l'indice**
Scenario: 2 campi indicizzati, 1 selettivo MA che utilizza un'operazione non supportata
SELECT count() FROM Account WHERE Account_Hierarchy__c = 'Child'
Scenario: 1 campo indicizzato che utilizza una variabile di binding non selettiva (>10% del numero di righe dell'sObject)
000386864

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.