Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
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
Sin bloqueo
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
unionno está en el filtro de nivel superior, Dataverse transforma la consulta y mueve el filtro con sugerencia deunionpara el filtro raíz. - Si la sugerencia de
uniontiene 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>
Optimización automática de consultas
No se sorprenda cuando el rendimiento de una consulta lenta mejora sin ningún cambio en su parte. Dataverse supervisa activamente las operaciones de recuperación de datos para mejorar el rendimiento. Cuando una consulta específica con tablas estándar funciona mal, Dataverse podría realizar automáticamente cambios que mejoran el rendimiento de la consulta. Este comportamiento puede hacer que ciertos problemas de rendimiento aparezcan transitorios porque no se pueden reproducir más adelante.
La optimización automática de consultas no requiere ninguna configuración. Está habilitado de forma predeterminada para todos los usuarios.
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