Optimiser les performances à l’aide de FetchXml
Cet article décrit les façons dont vous pouvez optimiser les performances lors de la récupération de données à l’aide de FetchXml.
Requête de matérialisation tardive
Si vous sélectionnez de nombreuses colonnes de recherche et calculées et que vous rencontrez des problèmes de performances, vous pouvez essayer de définir l’attribut latematerialize
de l’élément fetch. En arrière-plan, ce paramètre divise la requête en parties plus petites et réassemble les résultats avant de vous les renvoyer.
L’utilisation de l’attribut latematerialize
peut ne pas toujours offrir un avantage en termes de performances. Il peut ralentir l’exécution de requêtes simples. Il est plus bénéfique lorsque votre requête :
- Dispose de nombreuses jointures
- Contient de nombreuses colonnes de recherche ou de colonnes calculées
Indicateurs de requête
Important
Appliquez ces options uniquement lorsqu’elles sont recommandées par le support technique Microsoft. Une utilisation incorrecte de ces options peut dégrader les performances d’une requête.
Microsoft SQL Server prend en charge plusieurs indicateurs de requête pour optimiser les requêtes. FetchXML prend en charge les indicateurs de requête et peut transmettre ces options de requête à SQL Server à l’aide de l’attribut options de l’élément fetch.
Option FetchXML | Conseil SQL Server |
---|---|
OptimizeForUnknown |
Optimiser pour inconnu |
ForceOrder |
Forcer l’ordre |
DisableRowGoal |
Conseil : DISABLE_OPTIMIZER_ROWGOAL |
EnableOptimizerHotfixes |
Conseil : ENABLE_QUERY_OPTIMIZER_HOTFIXES |
LoopJoin |
Mettre en boucle la jonction |
MergeJoin |
Fusionner la jonction |
HashJoin |
Hacher la jonction |
NO_PERFORMANCE_SPOOL |
NO_PERFORMANCE_SPOOL |
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
Conseil : ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
Plus d’information : Conseils (Transact-SQL) - Requête
Aucun verrou
Dans les versions antérieures, l’attribut no-lock
était utilisé pour empêcher les verrous partagés dans les enregistrements. Il n’est plus nécessaire d’inclure cet attribut.
Indicateur d’union
Vous pouvez améliorer les performances lors de l’ajout d’un élément filter qui définit la condition pour les colonnes de différentes tables en définissant l’attribut hint
sur union
. Mais certaines restrictions s’appliquent :
- Le filtre doit utiliser le type de filtre
or
. - Chaque requête ne peut contenir qu’un seul indicateur
union
. - Si un filtre avec un indicateur
union
n’est pas un filtre de niveau supérieur, Dataverse transforme la requête et déplace le filtre avec un indicateurunion
vers le filtre racine. - Si un indicateur
union
dispose de plus de trois niveaux de profondeur, il est ignoré.
L’exemple suivant définit un filtre avec l’indicateur union
sur la colonne telephone1
à la fois pour les tables compte et contact.
<fetch>
<entity name="email">
<attribute name="activityid" />
<attribute name="subject" />
<filter type="and">
<condition attribute="subject"
operator="like"
value="Alert:%" />
<condition attribute="statecode"
operator="eq"
value="0" />
<filter type="or"
hint="union">
<condition attribute="telephone1"
operator="eq"
value="555-123-4567"
entityname="ac" />
<condition attribute="telephone1"
operator="eq"
value="555-123-4567"
entityname="co" />
</filter>
</filter>
<link-entity name="account"
from="accountid"
to="regardingobjectid"
link-type="outer"
alias="ac" />
<link-entity name="contact"
from="contactid"
to="regardingobjectid"
link-type="outer"
alias="co" />
</entity>
</fetch>
Voir aussi
Interroger des données à l’aide de FetchXml
Récupérer des données à l’aide de FetchXml
Sélectionner des colonnes à l’aide de FetchXml
Joindre des tables à l’aide de FetchXml
Trier des lignes à l’aide de FetchXml
Filtrer des lignes à l’aide de FetchXml
Paginer des résultats à l’aide de FetchXml
Agréger des données à l’aide de FetchXml
Compter des lignes à l’aide de FetchXml
Référence FetchXml
Exemple de code FetchXml
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour