Anular condição no FIREBIRD

06/09/2019

0

Olá,
Estou passando dificuldades com o FIREBIRD.
Tenho uma situação que gero num mesmo relatório dois templates, um resumido com uma query e um detalhado com outra query, transformando o template visivel conforme o usuário preencheu os filtros do relatório.
Pois bem, as query são pesadas e não gostaria de rodas as duas juntas sempre que gero o relatório.

Então pensei em anular a query que não quero rodar, por exemplo.

Query detalhada
select * from DETALHADO
where 1 = 0/*TIPOREL*/


Query resumida
select * from RESUMIDO
where 2 = 0/*TIPOREL*/


Onde eu passaria no lugar de /*TIPOREL*/ 1 ou 2 conforme o usuário selecionasse nos filtros do relatório.

O problema está em: Quando faço 1=2 no firebird, ele ignora os index da tabela e percorre ela FULL fazendo essa validação, oque faz totalmente ao contrario do que eu tinha a intenção.

Se me falarem, Tainan você está louco? É isso mesmo que o banco tem que fazer.
Eu argumento que: o oracle e o postgres trabalham assim, se eu passar 1=2 ele entende que não estou validando nenhum campo da tabela e anula toda a query, não alocando recurso para a consulta e não gerando custo de processamento.

O que eu quero é saber se existe algum parâmetro no FB que possa ser alterado para ele não percorrer toda a tabela quando passo 1=2?
Tainan Ramos

Tainan Ramos

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar