Produto | : | TOTVS Framework |
Processo | : | Filtro de Action |
Subprocesso | : | Utilizando filtro com SQL |
Data da publicação | : | 15/06/2015 |
Status do Documento: | Em Produção |
---|---|
Data: | 15/06/2015 |
Versão: | 1.0 |
Versão Anterior: | 1.0 |
Autores: | Diego Henrique Almeida de Oliveira |
Objetivo
Ao utilizar um filtro de visão que possua como parâmetro o operador IN(SQL) ou NOT IN (SQL), corre-se o risco de tornar a visualização extremamente lenta. Isso ocorre devido a independência das Sentenças geradas na execução do banco de dados.
Toda visão ao ser carregada, executa uma Consulta no banco de dados. Quando os operadores IN(SQL) ou NOT IN(SQL) são utilizados, uma Sentença SQL é montada. A Sentença gerada ao abrir a visão é mesclada com a Sentença inserida no operador do filtro, para então, executar a Consulta no banco de dados.
Pelo fato das sentenças (da visão e a do operador SQL) não possuírem nenhuma conexão, o plano de execução gerado pelo SGBD não será adequado. Por esse fato ocorrem casos de extrema lentidão quando usuários executam este processo.
Para que isso não ocorra, é necessário adaptar a Consulta SQL utilizada com o operador escolhido, otimizando-a de forma que exista uma conexão entre as Sentenças SQL.
Caso Inadequado
Este é o caso Inadequado e comumente utilizado
Acesse “Serviços Globais | Gestão | Visões de Dados” e insira a seguinte consulta SQL:
Agora acesse “Serviços Globais | Administração | Coligadas” e selecione “Novo filtro”:
Na edição do filtro selecione o campo Código, o operador IN(SQL) e a consulta criada anteriormente (SUBQUERY):
Este modo é inadequado, pois não possui conexão com a Sentença da action. Como exemplo, considere a imagem abaixo como a Sentença gerada. Em negrito destacamos a sentença gerada pela action e sublinhado a Sentença adicionada pelo filtro. Em vermelho, encontra-se a linha que pode ser otimizada. Percebe-se que a “SUBQUERY” não possui conexão com a Sentença principal, isso torna a consulta do SGBD muito mais lenta.
Caso Adequado
Este é o caso Adequado e recomendado para melhor performance do sistema.
Acesse “Serviços Globais | Gestão | Visões de Dados” e insira a seguinte consulta SQL:
Ao clicar em salvar, o sistema ira retornar uma mensagem de aviso pois ela não possui a tabela GCOLIGADA como parâmetro, clique em Sim e salve a consulta:
Agora acesse “Serviços Globais | Administração | Coligadas” e selecione “Novo filtro”:
Na edição do filtro selecione o campo Código, o operador IN(SQL) e a consulta criada anteriormente (SUBQUERY):
Este modo é o mais adequado, pois possui conexão com a Sentença da action. Como exemplo, considere a imagem abaixo como a Sentença que é gerada. Em negrito destacamos a sentença gerada pela action e sublinhado a Sentença adicionada pelo filtro. Em vermelho, encontra-se a linha que foi otimizada para melhorar a performance da Sentença, consequentemente uma resposta melhor do sistema ao se utilizar tais tipos de filtro.
Para maiores informações:
Consulte o WikiHelp TOTVS
COMUNIDADE @FRAMEWORK
Canais de Atendimento:
Chamado: Através do Portal Totvs www.suporte.totvs.com.br
Telefônico: 4003-0015 Escolhendo as opções 2 – (Software), 2 – (Suporte Técnico), 3 – (RM), 9 – (Demais Áreas), 4 – (BI) e 3 – (Gerador de Relatórios e Planilha)