Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Note
Pour obtenir des conseils sur les aspects généraux à éviter lors de la composition de requêtes Dataverse, consultez Anti-modèles de requête. Les sections suivantes sont spécifiques à 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 de l’latematerialize. 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 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 de requête | Conseil SQL Server |
|---|---|
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
unionn’est pas un filtre de niveau supérieur, Dataverse transforme la requête et déplace le filtre avec un indicateurunionvers le filtre racine. - Si un indicateur
uniondispose 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>
Optimisation automatique des requêtes
Ne soyez pas surpris lorsque les performances d’une requête lente s’améliorent sans aucune modification de votre part. Dataverse surveille activement les opérations de récupération de données pour améliorer les performances. Lorsqu’une requête spécifique utilisant des tables standard fonctionne mal, Dataverse peut apporter automatiquement des modifications qui améliorent les performances de la requête. Ce comportement peut rendre certains problèmes de performances temporaires, car ils ne peuvent pas être reproduits ultérieurement.
L’optimisation automatique des requêtes ne nécessite aucune configuration. Il est activé par défaut pour tout le monde.
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
Anti-modèles de requête