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.
El patrón de consulta de datos más sencillo y rápido es:
- Una sola tabla o vista
- Filtrado en el servidor previamente según lo que necesita
- Las columnas se indexan correctamente para las consultas esperadas.
Al diseñar la aplicación, debe pensar en cómo consultar los datos rápidamente. La mejor manera de consultar datos es usar una sola tabla o vista que tenga toda la información que necesita y filtrarla en el servidor antes de mostrarla en la aplicación. También debe asegurarse de que las columnas que use para filtrar o ordenar los datos se indexan correctamente. Esto hace que la aplicación sea más rápida y suave.
Por ejemplo, supongamos que tiene una galería que muestra una lista de clientes y sus vendedores. Si almacena la información del cliente y del vendedor en tablas independientes, debe usar búsquedas para obtener el nombre del vendedor para cada cliente. Esto ralentiza la aplicación porque necesita ejecutar muchas consultas en la otra tabla. Una mejor manera es crear una vista que combine la información del cliente y del vendedor en una tabla y use esa vista como origen de datos para la galería. A continuación, la aplicación solo necesita ejecutar una consulta para obtener todos los datos que necesita.
Hay un equilibrio entre la velocidad de consulta y la normalización de datos. La normalización de datos significa que solo se almacenan los datos una vez y se evita la duplicación. Esto ayuda a mantener los datos coherentes y precisos. Sin embargo, a veces es necesario duplicar algunos datos para que las consultas sean más rápidas y fáciles. Debes equilibrar estos dos objetivos en el diseño de la aplicación y la estructura de la tabla. De lo contrario, la aplicación será lenta y con retardos porque necesita hacer mucho trabajo para filtrar y combinar los datos de diferentes tablas.
Utilice vistas del lado del servidor
Es probable que las vistas sean la herramienta más común para ayudar a equilibrar estos objetivos. Presentan una única estructura de tabla para consultas, prefiltran datos para lo que se necesita en la consulta y habilitan búsquedas y uniones con otras tablas. Dado que los filtros, las búsquedas y las uniones de la vista se calculan en el servidor, la carga útil y el procesamiento en el lado del cliente se minimizan.
Evitar demasiadas búsquedas en una galería
Una galería puede mostrar muchos registros de un origen de datos. Pero a veces, debe mostrar información adicional de otro origen de datos relacionado con el original. Por ejemplo, tiene una galería que muestra una lista de clientes y desea mostrar el nombre del vendedor asignado a cada cliente. El nombre del vendedor se almacena en un origen de datos diferente al de la información del cliente. Para mostrar el nombre del vendedor, debe usar una función de búsqueda que encuentre el registro coincidente en el otro origen de datos. Esto expande la tabla original con los valores de búsqueda.
Sin embargo, la expansión de la tabla puede ser muy lenta si tiene muchos registros y muchas búsquedas. Para cada registro de la galería, la aplicación debe ejecutar una consulta independiente en el otro origen de datos y obtener el valor de búsqueda. Esto significa que la aplicación puede necesitar ejecutar muchas consultas para cada registro, lo que puede tardar mucho tiempo y afectar al rendimiento de la aplicación. Este antipatrón se conoce a veces como "N cuadrado, (n^2)" o un problema "N+1".
Usar StartsWith o Filter
Power Fx proporciona varias maneras de buscar datos. En general, use una expresión que aproveche un índice como StartsWith o Filter en lugar de uno que lea toda la tabla como In. El operador In es adecuado para las colecciones en memoria o si la tabla del origen de datos externo es muy pequeña.
Considere la posibilidad de duplicar datos
A veces, los datos son lentos para acceder a una consulta porque se almacenan en una ubicación o formato diferente. Para que la consulta sea más rápida, puede copiar los datos lentos y almacenarlos localmente en una tabla que sea rápida y fácil de consultar. Sin embargo, esto significa que los datos locales pueden no ser la versión más actualizada de los datos originales. A continuación, ejecute otro proceso para actualizar los datos locales periódicamente. Este proceso puede ser un flujo de Power Automate, un complemento, un procedimiento almacenado o cualquier otro método que pueda mover datos de un lugar a otro.
El requisito de frecuencia de actualización de los datos locales depende de sus necesidades empresariales. ¿Cuán reciente deben ser los datos para tu aplicación? Por ejemplo, supongamos que trabaja para Contoso, una empresa que vende bicicletas. La lista de bicicletas disponibles se almacena en una base de datos Products a la que puede acceder a través de una API en un conector personalizado. Pero supongamos que la llamada API es lenta y, por tanto, decide copiar los datos del producto y almacenarlos localmente en una tabla. A continuación, crea una vista que combina la tabla con otros datos relevantes para la aplicación. También puede crear un flujo de Power Automate que se ejecute todos los días y actualice la tabla con los datos de producto más recientes de la API. A continuación, la aplicación puede consultar los datos locales con mayor rapidez y los datos son solo un día de antigüedad como máximo.
La duplicación de datos es un tipo común de técnica en aplicaciones de nivel empresarial para garantizar un buen rendimiento. Puede usar complementos de Dataverse, procedimientos almacenados o movimiento de datos para duplicar los datos en una sola tabla optimizada para realizar consultas. La pregunta clave es: ¿Cómo debe estar actualizada esta información? Si puedes pagar algún retraso, puedes usar esta técnica para acelerar la aplicación.
Sugerencias
Para lograr este objetivo, tenga en cuenta las siguientes preguntas y sugerencias:
- ¿Cuál es la importancia para un cliente de ver el valor de los datos en una galería o rejilla de datos? ¿Sería aceptable seleccionar primero un registro y, a continuación, mostrar los datos en un formulario?
- ¿Puede una vista realizar el trabajo previo necesario para ver los datos en el formato correcto?
- ¿Está utilizando un operador "IN" donde funcionará "StartsWith"?
- ¿Qué tan actualizados deben estar sus datos? ¿Existe una estrategia de duplicación de datos que puede usar para que la consulta funcione en una sola tabla de forma predeterminada?