Minimizando consultas de tabela
Saiba como minimizar consultas para maximizar o desempenho.
Quanto mais consultas você tiver, mais elas afetam o desempenho. Este artigo discute duas maneiras de minimizar consultas para ajudar a manter o desempenho o mais rápido possível.
Regras de implementação
Ao criar uma configuração, considere como você pode implementá-la para minimizar consultas.
Por exemplo, suponha que você tenha uma tabela de comprimento, largura e altura de vários componentes. Depois de selecionar um número de peça, você deseja consultar esses valores para calcular o volume. A melhor maneira de consultar essas informações depende do caso de uso e de onde os valores são necessários a jusante da consulta.
Se a configuração usar somente o volume total, a melhor abordagem será colocar a consulta na regra de determinação avançada para o volume, semelhante a este código simplificado:
- Consulte L, W e H da tabela
- L*W*H
- Vol. De retorno
Total de consultas: 1.
No entanto, se você estiver escrevendo uma regra de volume e souber que precisará usar os valores de comprimento, largura e altura em outro lugar, o código acima não será apropriado. Em vez disso, você deve escrever sua regra de determinação da seguinte forma:
- L*W*H
- Vol. De retorno
Você deve ter as consultas nas regras de determinação. As regras de determinação só podem definir um campo de cada vez, portanto, isso precisaria de três regras de determinação - uma regra para comprimento, largura e altura - e três consultas. Isso impede a execução de uma quarta consulta (uma em cada regra de comprimento, largura e altura e uma na regra de determinação de volume).
Outra maneira de reduzir consultas é estar ciente dos campos associados a uma regra. Suponha que você tenha uma consulta em uma regra que faz referência a muitos campos. A regra é executada sempre que um dos campos associados a essa regra muda. Portanto, a consulta é executada todas as vezes.
Digamos que você precise calcular o volume e, em seguida, multiplicar esse volume pela densidade (que pode mudar com base no material selecionado pelo usuário) para obter o peso total. O usuário não precisa usar o volume em nenhum outro lugar downstream. Aqui está um script de exemplo:
- Consulte L,W,A da tabela
- L*W*H
- Vol * cfg.density
- Massa de retorno
O problema é que sempre que a densidade muda, a regra é executada e, em seguida, a consulta é executada. Mas os valores de L, W e H não mudam. Portanto, o processador tem que ir para a tabela, encontrar os valores para L, W e H, e redefinir a variável vol para o mesmo valor que era antes. Uma abordagem melhor é calcular o volume como um campo separado com uma regra separada. Em seguida, escreva a regra de massa da seguinte forma:
var mass = cfg.volume * cfg.density;
return mass;
A massa ainda recalcula a cada vez, mas se destina a isso. Nenhum tempo de processamento é desperdiçado fazendo consultas desnecessárias e redefinição de valores.
Consultando uma lista
Como visto acima com L, W e H, você pode extrair várias colunas de uma tabela em uma única consulta. Em outros momentos, você pode querer consultar a tabela em vários valores. Por exemplo, suponha que você tenha uma lista de seleção de várias seleções (nome do campo Cores selecionadas ) de cores diferentes. Você também tem uma tabela de "matizes" que tem uma coluna vermelha, azul e verde para dizer as proporções.
Se você quiser consultar a tabela para todas as opções selecionadas da lista de seleção de múltipla seleção, há duas opções.
for (color of cfg.selectedColors){
var tableResults=lookup(“Select blue, red, green from hues where value := value”, {“value”: color});
//more code
Isso para loop significa que o número de consultas é baseado no número de opções selecionadas para Cores selecionadas campo. Como alternativa, o código a seguir consulta a tabela uma vez.
var tableResults=lookup(“select blue, red, green from hues where value in (:list)”, {“list”: cfg.selectedColors});
Este método é melhor.
Para obter mais informações sobre o que é compatível com uma consulta, consulte A função de pesquisa: Comandos e sintaxe.