Child pages
  • Melhorando Performance de filtro com SQL
Skip to end of metadata
Go to start of metadata

Produto

:

TOTVS Framework                                                          

Processo

:

Filtro de Action

Subprocesso

:

Utilizando filtro com SQL

Data da publicação

:

15/06/2015

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)

      • No labels