Comparteix a través de


Optimizar el rendimiento mediante FetchXml

Este artículo describe formas de optimizar el rendimiento al recuperar datos mediante 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, columnas de búsqueda o columnas 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 utilizando el atributo fetch element options .

Query option SQL Server hint
OptimizeForUnknown Optimize for unknown
ForceOrder Force Order
DisableRowGoal Hint: DISABLE_OPTIMIZER_ROWGOAL
EnableOptimizerHotfixes Hint: ENABLE_QUERY_OPTIMIZER_HOTFIXES
LoopJoin Loop Join
MergeJoin Merge Join
HashJoin Hash Join
NO_PERFORMANCE_SPOOL NO_PERFORMANCE_SPOOL
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS Hint: ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS

More information: Hints (Transact-SQL) - Query

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 de union 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

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).