Share via


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 mediante el atributo elemento Fetch opciones.

Opción FetchXML Sugerencia de SQL Server
OptimizeForUnknown Optimizar para desconocido
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 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).