Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
Al usar 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:
Sobrecarga del constructor ColumnSet (columnas de la cadena[] del parámetro) para QueryExpression.
var query = new QueryExpression("account") { ColumnSet = new ColumnSet("name", "address1_city") }; var results = service.RetrieveMultiple(query);Sobrecarga del constructor ColumnSet (columnas de la cadena[] del parámetro) para RetrieveRequest.
var entity = service.Retrieve("account", Guid.NewGuid(), new ColumnSet("name", "address1_city"));Llamada al método ColumnSet.AddColumn(String).
var query = new QueryExpression("account"); query.ColumnSet.AddColumn("name"); query.ColumnSet.AddColumn("address1_city"); var results = service.RetrieveMultiple(query);Llamada al método ColumnSet.AddColumns(String[]).
var query = new QueryExpression("account"); query.ColumnSet.AddColumns("name", "address1_city"); var results = service.RetrieveMultiple(query);
Las siguientes contienen una instancia ColumnSet:
- ConvertQuoteToSalesOrderRequest
- GenerateInvoiceFromOpportunityRequest
- GenerateQuoteFromOpportunityRequest
- GenerateSalesOrderFromOpportunityRequest
- RetrieveAllChildUsersSystemUserRequest
- RetrieveBusinessHierarchyBusinessUnitRequest
- RetrieveMembersTeamRequest
- RetrieveRequest
- RetrieveSubsidiaryTeamsBusinessUnitRequest
- RetrieveSubsidiaryUsersBusinessUnitRequest
- RetrieveTeamsSystemUserRequest
- RetrieveUnpublishedRequest
- RetrieveUserSettingsSystemUserRequest
- ReviseQuoteRequest
- SearchByBodyKbArticleRequest
- IOrganizationService.Retrieve
- QueryExpression
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(bool allColumns).
var query = new QueryExpression("account") { ColumnSet = new ColumnSet(true) }; var results = service.RetrieveMultiple(query);Sobrecarga del constructor ColumnSet(bool 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
Clase ColumnSet
Seleccionar columnas usando QueryExpression
Consultar datos usando QueryExpression