A Importância do @ e # em um Filtro de uma Consulta Padrão (SXB)

Você sabia da importância dos caracteres @ e # (arroba e sustenido respectivamente) no filtro de uma consulta padrão? Veja para que servem no artigo de hoje.

No cadastro de consulta padrão (tabela SXB), existe um recurso interessante que é aplicar um filtro nos dados da tabela, abaixo mesmo, segue um print do cadastro da consulta da tabela SU7 (Operadores do TMK):

Exemplo de Filtro na SXB

O que acontece, é que no filtro da Consulta Padrão (XB_TIPO igual a 6), ele vem fazendo a validação linha a linha da tabela. Ai se tiverem poucos registros, quase não sentimos queda de performance.

Mas e se a tabela tiver milhares de registros? Como poderíamos melhorar a filtragem, meio que já deixando ela na memória?

Tomamos como exemplo, o print que vimos acima, num cenário sem o @# , o que o sistema faz é:

  1. A cada linha, ele aciona a FWxFilial
  2. Vem e compara com o campo de Filial da tabela SU7
  3. Então se tiver 2 mil registros, ele vai acionar a FWxFilial 2 mil vezes para realizar as comparações

Agora com o @#, o que ele faz é o seguinte:

  1. Aciona uma única vez a FWxFilial, e armazena o conteúdo dela
  2. Vem e compara com o capmo de Filial da tabela SU7
  3. Então se tiver 2 mil registros, ele vai acionar a FWxFilial UMA ÚNICA VEZ para depois realizar as comparações

Ai da importância e da utilidade desses caracteres. Agora apenas explicando o que é cada um deles:

# (Sustenido): A expressão passará por uma macro execução, dessa forma você pode usar funções ou variáveis no filtro

@# (Arroba e Sustenido): Faz com que a expressão seja executada apenas uma única vez, ganhando tempo para não precisar ficar executando toda vez a cada linha de registro

@ (Arroba): Só com o @ também é possível filtrar com sintaxe direta em SQL, por exemplo, supondo que eu queira que na consulta padrão traga apenas clientes que sejam da região SUL, eu poderia fazer o filtro assim na Consulta Padrão:

@A1_COD IN ('PR', 'SC', 'RS')

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação