Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O padrão de consulta de dados mais simples e rápido é:
- Uma única tabela ou exibição
- Pré-filtragem no servidor para aquilo de que você precisa
- As colunas são indexadas corretamente para as consultas esperadas
Ao projetar seu aplicativo, você precisa pensar em como consultar os dados rapidamente. A melhor maneira de consultar dados é usar uma única tabela ou exibição que tenha todas as informações necessárias e filtre-os no servidor antes de exibi-los em seu aplicativo. Você também precisa garantir que as colunas usadas para filtrar ou classificar os dados sejam indexadas corretamente. Isso torna seu aplicativo mais rápido e suave.
Por exemplo, suponha que você tenha uma galeria que mostre uma lista de clientes e seus vendedores. Se você armazenar as informações do cliente e do vendedor em tabelas separadas, precisará usar pesquisas para obter o nome do vendedor para cada cliente. Isso reduz a velocidade do aplicativo porque ele precisa executar muitas consultas para a outra tabela. Uma maneira melhor é criar uma exibição que combine as informações do cliente e do vendedor em uma tabela e use essa exibição como a fonte de dados para sua galeria. Em seguida, seu aplicativo só precisa executar uma consulta para obter todos os dados necessários.
Há uma troca entre a velocidade da consulta e a normalização de dados. A normalização de dados significa que você armazena os dados apenas uma vez e evita a duplicação. Isso ajuda a manter os dados consistentes e precisos. No entanto, às vezes, você precisa duplicar alguns dados para tornar as consultas mais rápidas e fáceis. Você precisa equilibrar essas duas metas no design do aplicativo e na estrutura da tabela. Caso contrário, seu aplicativo será lento e atrasado, pois ele precisa fazer vários trabalhos para filtrar e unir os dados de tabelas diferentes.
Use visões do lado do servidor
As visões provavelmente são a ferramenta mais comum para ajudar a equilibrar esses objetivos. Eles apresentam uma única estrutura de tabela para consultas, pré-filtro de dados para o que você precisa na consulta e habilitam pesquisas e junções a outras tabelas. Como os filtros, as pesquisas e as junções da exibição são computados no servidor, a carga útil e a computação do lado do cliente são minimizadas.
Evitar muitas consultas em uma galeria
Uma galeria pode exibir muitos registros de uma fonte de dados. Mas, às vezes, você precisa mostrar informações adicionais de outra fonte de dados relacionadas à original. Por exemplo, você tem uma galeria que mostra uma lista de clientes e deseja mostrar o nome do vendedor atribuído a cada cliente. O nome do vendedor é armazenado em uma fonte de dados diferente das informações do cliente. Para mostrar o nome do vendedor, você precisa usar uma função de pesquisa que encontre o registro correspondente na outra fonte de dados. Isso expande a tabela original com os valores de pesquisa.
No entanto, a expansão da tabela pode ser muito lenta se você tiver muitos registros e muitas pesquisas. Para cada registro na galeria, o aplicativo precisa executar uma consulta separada para a outra fonte de dados e obter o valor de pesquisa. Isso significa que o aplicativo pode precisar executar muitas consultas para cada registro, o que pode levar muito tempo e afetar o desempenho do aplicativo. Às vezes, esse antipadrão é conhecido como "N quadrado, (n^2)" ou um problema "N+1".
Usar `StartsWith` ou `Filter`
O Power Fx fornece várias maneiras de pesquisar dados. Em geral, use uma expressão que aproveite um índice como StartsWith ou Filter em vez de um que leia a tabela inteira como In. O operador In é bom para coleções na memória ou se a tabela de fonte de dados externa é muito pequena.
Considere a duplicação de dados
Às vezes, os dados são lentos para acessar em uma consulta porque são armazenados em um local ou formato diferente. Para tornar a consulta mais rápida, você pode copiar os dados lentos e armazená-los localmente em uma tabela rápida e fácil de consultar. No entanto, isso significa que os dados locais podem não ser a versão mais atualizada dos dados originais. Em seguida, execute outro processo para atualizar os dados locais periodicamente. Esse processo pode ser um fluxo do Power Automate, um plug-in, um procedimento armazenado ou qualquer outro método que possa mover dados de um local para outro.
O requisito de frequência de atualização dos dados locais depende de suas necessidades comerciais. Quão novos os dados precisam ser para seu aplicativo? Por exemplo, suponha que você trabalhe para a Contoso, uma empresa que vende bicicletas. A lista de bicicletas disponíveis é armazenada em um banco de dados de produtos que você pode acessar por meio de uma API em um conector personalizado. Mas diga que a chamada à API é lenta e, portanto, você decide copiar os dados do produto e armazená-los localmente em uma tabela. Em seguida, você cria uma exibição que combina sua tabela com outros dados relevantes para seu aplicativo. Você também cria um fluxo do Power Automate que é executado todos os dias e atualiza sua tabela com os dados mais recentes do produto da API. Em seguida, seu aplicativo pode consultar os dados locais mais rapidamente e os dados têm no máximo um dia de idade.
A duplicação de dados é um tipo comum de técnica em aplicativos de nível empresarial para garantir um bom desempenho. Você pode usar plug-ins do Dataverse, procedimentos armazenados ou movimentação de dados para duplicar dados em uma única tabela otimizada para consulta. A pergunta chave é: como esses dados devem estar atualizados? Se puder tolerar alguma demora, você pode usar essa técnica para acelerar seu aplicativo.
Sugestões
Para atingir essa meta, considere as seguintes perguntas e sugestões:
- Qual é a importância de um cliente ver o valor dos dados em uma galeria ou grade de dados? Seria aceitável primeiro selecionar um registro e depois mostrar os dados em um formulário?
- Uma visualização pode realizar o pré-trabalho necessário para ver os dados no formato correto?
- Você está usando um operador "IN" em que um "StartsWith" funcionará?
- Quão atualizados seus dados precisam estar? Há uma estratégia de duplicação de dados que você pode usar para fazer com que a consulta funcione em uma única tabela por padrão?