[firebase-br] Função com melhor desempenho: Max ou First 1

Gladiston Santana gladiston em vidy.com.br
Qua Jan 8 09:20:11 -03 2020


Usar o FIRST poderá levar a erros e performance ruim se não tiver o índice
adequado.
O MAX é recomendado, se não houver indice disponivel não será performático
mas entregará o que você pediu.
Em bancos SQL você não pode ficar inventando jeitos diferentes que você
acaba se dando mal, pragmatismo pode ser uma qualidade ruim em atividades
interpessoal, mas em programação é uma qualidade fundamental.

Em qua., 8 de jan. de 2020 às 01:18, Carlos Andrade <krlosgilson em gmail.com>
escreveu:

> Olá! No meu Select, para se obter o maior ID, qual destas funções seria
> mais apropriada e que utilizaria menos recurso de processador/memória?
>
> "select max(M2.ID)"
>
> select M1.SALDO from CONTAS_MOV M1 where (M1.ID = (select max(M2.ID)
> from CONTAS_MOV M2 where (M2.DATA <= current_date) and (M2.ID_EMP = 1)
> and (M2.TIPO_MOV = 1)))
>
> ou
>
> "select first 1 M2.ID"
>
> select M1.SALDO from CONTAS_MOV M1 where (M1.ID = (select first 1 M2.ID
> from CONTAS_MOV M2 where (M2.DATA <= current_date) and (M2.ID_EMP = 1)
> and (M2.TIPO_MOV = 1) order by M2.ID desc))
>
>
> Eu tenho em mente que a função "max" é mais nativa, mas também que ela
> pode contar vários registros até retornar o maior. Eu não sei o impacto
> que isso causaria numa tabela com milhões de registros.
>
> Já o "first 1" pode retornar de "cara" o primeiro registro, só que para
> ele funcionar desta forma, eu tenho que utilizar "order by ID desc".
> Acredito que assim eu não estarei utilizando o índice do campo por ser
> uma PK Ascending.
>
>
> ______



Mais detalhes sobre a lista de discussão lista