Child pages
  • Melhorando Performance de filtro com SQL

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Produto

:

TOTVS Framework                                                          

Processo

:

Filtro de Action

Subprocesso

:

Utilizando filtro com SQL

Data da publicação

:

1015/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 da tela extremamente lenta. Este fato 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 um destes dois operadores os operadores IN(SQL) ou NOT IN(SQL) são utilizados, uma Sentença SQL é montada. A Sentença que é gerada ao abrir a visão é mesclada com a Sentença inserida no operador do filtro, para assim então, executar a Consulta no banco de dados.

Devido ao 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á o adequado e por . Por esse fato ocorrem casos de extrema lentidão quando usuários desejam executar executam este tipo de processo.

Para resolver o problemaque 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

Deck of Cards
idDeck
Card
labelPasso 1

Acesse “Serviços Globais | Gestão | Visões de Dados” e insira a seguinte consulta SQL:

Card
labelPasso 2

Agora acesse “Serviços Globais | Administração | Coligadas” e selecione “Novo filtro”:

Card
labelPasso 3

Na edição do filtro selecione o campo Código, o operador IN(SQL) e a consulta criada anteriormente (SUBQUERY):

Card
labelPasso 4

Este modo é inadequado, pois não possui conexão com a Sentença da action. Para moldelo de 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. Destacado em 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 carregada e lenta.

 

 

 

Caso Adequado

Este é o caso Adequado e recomendado para melhor performance do sistema.

Deck of Cards
idDeck2
Card
labelPasso 1

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:

Card
labelPasso 2

Agora acesse “Serviços Globais | Administração | Coligadas” e selecione “Novo filtro”:

Card
labelPasso 3

Na edição do filtro selecione o campo Código, o operador IN(SQL) e a consulta criada anteriormente (SUBQUERY):

Card
labelPasso 4

Este modo é o mais adequado, pois possui conexão com a Sentença da action. Para modelo de 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. Destacado em Em vermelho, encontra-se a linha que foi otimizada para proporcionar uma melhor performance a melhorar a performance da Sentença, consequentemente uma resposta melhor do sistema ao se utilizar tais tipos de filtro.

Info
titlePara 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)