![](https://static.wixstatic.com/media/2a8f4d_e08cf224398544f3a2e626f8b260dc6c~mv2.png/v1/fill/w_980,h_551,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/2a8f4d_e08cf224398544f3a2e626f8b260dc6c~mv2.png)
Le langage SOQL (Salesforce Object Query Language) est fait pour rechercher des informations spécifiques dans les données de votre organisation Salesforce.
SOQL est similaire à l'instruction SELECT dans le langage SQL (Structured Query Language) mais est conçu spécifiquement pour les données Salesforce.
Avec SOQL, vous pouvez construire des chaînes de requête simples mais puissantes dans plusieurs environnements.
Les dernières releases
Equivalent du « SELECT * » (2021)
Un petit rappel sur la fonction Fields() qui permet de simuler le « select * from Object » que l’on retrouve en SQL.
Cette fonction permet de récupérer l’ensemble des champs sans en connaitre le nom.
3 types sont disponibles :
Select FIELDS(ALL) from OBJECT : récupère tous les champs de l’objet.
Select FIELDS(STANDARD) from OBJECT : récupère tous les champs standard de l’objet.
Select FIELDS(CUSTOM) from OBJECT : récupère tous les champs custom de l’objet.
Un raccourci très utile qui permet de se retrouver confronté aux limitations des 100.000 caractères maximum dans l’écriture des requêtes.
Ces fonctions respectent également la visibilité des champs. Vous ne verrez que les champs auxquels vous avez accès.
Suppression de la limite des « 10 Concurrent Cursors » (2022)
Lorsque l'on a des systèmes externes qui interrogent les données Salesforce en SOAP ou en REST, il n'est possible de récupérer que 2000 enregistrements à la fois.
Si le nombre de résultats est plus élevé, la réponse de l'appel contiendra un premier ensemble d'enregistrements (2000) ainsi que le Query Locator dans un Cursor côté serveur.
Donc pour faire simple, ça récupère les premiers enregistrement et ça crée un marque-page côté serveur pour indiquer où en est la récupération des résultats.
Jusqu'à présent, il était possible d'avoir jusqu'à 10 curseurs simultanés. Cette limitation a été levée. Avant cela, il était tout simplement impossible de savoir si celle-ci allait être atteinte avant qu’elle le soit.
Les curseurs étaient accessibles pendant 15 minutes maximum. Aujourd’hui les résultats resteront disponibles jusqu’à deux jours.
Evolutions planifiées pour les prochaines releases
Query Explain Parameter (BETA)
Salesforce met à disposition (en BETA pour le moment sur la REST), le paramètre de requête « Explain » qui permet d’obtenir des informations sur la façon dont Salesforce exécute votre requête, rapport ou vue de liste.
Ceux qui ont déjà utilisé l’option « Query Plan » dans la dev console, retrouveront leur petits, puisque c’est ce que propose « Explain ».
Par contre, ce qui est pas mal, c’est d’avoir la même chose au niveau des vues de liste et des rapports, ce qui permettra de travailler les filtres et les champs indexés pour une meilleure optimisation.
Pour l’analyse des requêtes SOQL, exécutez : /services/data/vXX.X/query/?explain=VOTRE_REQUETE.
Pour l’analyse des rapports ou vue de liste, executez /services/data/vXX.X/query/?explain=ID_LISTVIEW_OU_RAPPORT.
Refactoring du Parser SOQL
Pour commencer, un parseur est ce qui va convertir vos requêtes SOQL en objet Java. C’est la première étape de l’interprétation avant l’exécution.
Salesforce souhaite refondre le parseur actuel pour plus de performance et plus de réutilisabilité. Et puis surtout parce que la technologie évolue, qu’il faut suivre son temps et que « Innovation » fait partie des valeurs de Salesforce.
C’est un investissement qui ne sera évidemment pas directement visible par les utilisateurs, mais qui permettra à Salesforce de développer plus rapidement de nouvelles fonctionnalités dans le futur ainsi que la prise en charge de la validation/interprétation offline de la syntaxe.
Ce focus fait également écho à la volonté de développement d’Hyperforce qui regroupe un ensemble de technologies visant à unifier les différents Cloud, et qui demande donc d’être alignés sur les derniers standards.
Roadmap : LES évolutions
La possibilité d’utiliser l’expression COUNT dans les requêtes relationnelles.
L'affichage des erreurs de niveau « Champs » (Field Level errors) dans le SOQL.
Le support de l’expression « typeof » dans les sous-requêtes (nested) – Utile lorsque l’on souhaite requêter sur des relations polymorphiques.
Le support des fonctions format() – pour les formats de type number, date, time, et currency - et toLabel() – pour la récupération des libellés des picklists - dans les expressions de type « typeof ».
L'augmentation des limites des sous-requêtes pour les agrégations et/ou les jointures.
L'ajout de nouveaux paramètres au Scope ([USING SCOPE filterScope]).
La prise en charge de la fonction de date MINUTE_IN_HOUR.
Le développement de nouveaux paramètres pour la fonction FIELDS (prise en compte des fields sets ou groupement de fields).
![](https://static.wixstatic.com/media/944e59_5487fb113e294f77891a32ce5e5417d5~mv2.png/v1/fill/w_980,h_221,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/944e59_5487fb113e294f77891a32ce5e5417d5~mv2.png)
Comments