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):
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 é:
- A cada linha, ele aciona a FWxFilial
- Vem e compara com o campo de Filial da tabela SU7
- 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:
- Aciona uma única vez a FWxFilial, e armazena o conteúdo dela
- Vem e compara com o capmo de Filial da tabela SU7
- 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.