SOQL Impaginazione per la Salesforce API query
-
19-09-2019 - |
Domanda
C'è un modo efficiente per scorrere le pagine di risultati di una query SOQL senza portare tutti i risultati delle query e poi scartare la maggior parte di loro?
Come un esempio, mi piacerebbe essere in grado di sfogliare l'elenco completo dei contatti che mostra i 10 record alla volta.Non ho la necessità di ordinare da un particolare settore.
Soluzione
Attualmente la soluzione più efficiente che ho trovato funziona con qualsiasi query SOQL attraverso il partner API è quello di mantenere l'soggetti restituito dall'iniziale QueryResult e la query locator caso viene richiesta una pagina al di fuori delle attuali risultati.
Questo ha richiesto un livello di paging supporto di Salesforce QueryResult.
I. e.Quando viene richiesta una pagina soggetti può essere richiesto da:
- La corrente (cache) QueryResult
- Una successiva QueryResult che possono essere recuperati utilizzando la query locator
- Una prima QueryResult
- Combinazione di tutti e tre.
Se la pagina si estende su due (o più) QueryResults un artificiale QueryResult dovrà essere creata con tutti i record necessari.
Aggiornamento per la Primavera 2012 Release
Sembra che ci sia una nuova funzionalità in arrivo che aggiungerà OFFSET supporto per SOQL.E. g.
SELECT Name FROM Merchandise__c WHERE Price__c > 5.0 ORDER BY Name LIMIT 50 OFFSET 100
Vedere Primavera '12 Force.com Release della Piattaforma - OFFSET aggiunto SOQL (Pilota)
Aggiornamento per l'Estate 2012 Release
OFFSET è ora GA (Disponibilità Generale?)
Altri suggerimenti
è possibile utilizzare un numero di auto-archiviato fare impaginazione lato server. questo campo può essere utilizzato dopo 'ordine da' clausola, può agire come un campo indice.
Ho fatto impaginazione come quello che si parte. ma ho avuto un altro problema, non posso fare quelli in lato server allo stesso tempo. perché ordinamento e impaginazione sia bisogno di aggiungere colonna dopo 'ordine da' clausola.