Optimizar el rendimiento mediante FetchXml
Nota
Para obtener instrucciones sobre los aspectos generales que se deben evitar al redactar consultas de Dataverse, consulte Antipatrones de consulta. Las siguientes secciones son específicas de FetchXml.
Consulta de materialización tardía
Si selecciona muchas columnas de búsqueda y calculadas y tiene problemas de rendimiento, puede intentar configurar el atributo elemento de Fetch booleano latematerialize
. Detrás de escena, esta configuración divide la consulta en partes más pequeñas y vuelve a ensamblar los resultados antes de devolvérselos.
Utilizar el atributo latematerialize
puede no proporcionar siempre un beneficio de rendimiento. Podría hacer que las consultas simples se ejecuten más lentamente. Es más beneficioso cuando su consulta:
- Tiene muchas combinaciones
- Contiene muchas columnas de búsqueda o calculadas
Sugerencias de consulta
Importante
Aplique estas opciones únicamente cuando lo recomiende el soporte técnico de Microsoft. El uso incorrecto de estas opciones puede dañar el rendimiento de una consulta.
Microsoft SQL Server admite muchas sugerencias de consulta para optimizar las consultas. FetchXML admite sugerencias de consulta y puede pasar estas opciones de consulta a SQL Server usando el atributo elemento de fetch opciones.
Opción de consulta | Sugerencia de SQL Server |
---|---|
ForceOrder |
Forzar orden |
DisableRowGoal |
Sugerencia: DISABLE_OPTIMIZER_ROWGOAL |
EnableOptimizerHotfixes |
Sugerencia: ENABLE_QUERY_OPTIMIZER_HOTFIXES |
LoopJoin |
Combinación de bucle |
MergeJoin |
Combinación de mezcla |
HashJoin |
Combinación hash |
NO_PERFORMANCE_SPOOL |
NO_PERFORMANCE_SPOOL |
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
Sugerencia: ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
Más información: Sugerencias (Transact-SQL) - Consulta
No lock
En versiones anteriores, se utilizaba el atributo no-lock
para evitar bloqueos compartidos en registros. Ya no es necesario incluir este atributo.
Sugerencia de combinación
Puede mejorar el rendimiento agregando un elemento de filtro que establece la condición para columnas en diferentes tablas configurando el atributo hint
en union
. Pero existen algunas restricciones:
- El filtro debe utilizar el tipo de filtro
or
. - Cada consulta puede contener sólo una sugerencia de
union
. - Si un filtro con la sugerencia de
union
no está en el filtro de nivel superior, Dataverse transforma la consulta y mueve el filtro con sugerencia deunion
para el filtro raíz. - Si la sugerencia de
union
tiene más de tres niveles de profundidad, se ignora.
El siguiente ejemplo establece un filtro con la sugerencia de union
en la columna telephone1
para las tablas cuenta y contacto.
<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>
Consulte también
Consultar datos mediante FetchXML
Usar FetchXml para recuperar datos
Seleccionar columnas mediante FetchXml
Unir tablas mediante FetchXml
Ordenar filas mediante FetchXml
Filtrar filas mediante FetchXml
Paginar resultados mediante FetchXml
Agregar datos mediante FetchXML
Contar filas mediante FetchXml
Referencia de FetchXml
Código de ejemplo de FetchXml
Antipatrones de consulta