No recuperar la entidad todas las columnas mediante las API de consulta

Categoría: rendimiento

Potencial de impacto: alto

Síntomas

Recuperar todas las columnas puede provocar:

  • Problemas de rendimiento por la cantidad de datos recuperados
  • Ejecución involuntaria de complementos y procesos

Instrucciones

Para obtener un rendimiento óptimo, debe seleccionar solo una cantidad mínima de datos necesarios por su aplicación cuando se consultan datos de Microsoft Dataverse.

Parámetro de ColumnSet

Cuando usa el método IOrganizationService.Retrieve establezca el parámetro columnSet en una instancia ColumnSet con columnas especificadas. Cuando se use QueryExpression establezca la propiedad ColumnSet con los atributos requeridos.

Estos son algunos ejemplos:

Las siguientes contienen una instancia ColumnSet:

Patrones problemáticos

Las consultas que incluyen un ColumnSet definido donde la propiedad AllColumns es true indican a la plataforma que emita un comando de SQL para "SELECT *" en todos los datos físicos incluidos en el plan de consultas. Este escenario debe evitarse siempre que sea posible.

Advertencia

Estos escenarios deben evitarse.

  • Llamada al método establecedor ColumnSet.AllColumns .

        var columns = new ColumnSet();
        columns.AllColumns = true;
    
        var query = new QueryExpression("account");
        query.ColumnSet = columns;
    
        var results = service.RetrieveMultiple(query);
    
  • Sobrecarga del constructor ColumnSet (valor booleano allColumns).

        var query = new QueryExpression("account")
        {
            ColumnSet = new ColumnSet(true)
        };
    
        var results = service.RetrieveMultiple(query);
    
  • Sobrecarga del constructor ColumnSet (valor booleano allColumns) para RetrieveRequest.

        var entity = service.Retrieve("account", Guid.Parse("bec45132-392a-4617-b935-a64ef04738e4"), new ColumnSet(true));
    

Información adicional

Las consultas enviadas para recuperar los datos de Dynamics 365 no deben seleccionar todas las columnas. En su lugar, especifique columnas individuales específicas que se deben especificar en la instancia ColumnSet asociada a la consulta. Recuperar todas las columnas de una entidad puede tener un impacto negativo en el rendimiento. Además, puede desencadenar involuntariamente eventos de complementos al recuperar columnas con la que no trabaja y emitir una actualización.

Vea también

ColumnSet Class
Usar la clase ColumnSet
Crear consultas con QueryExpression

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).