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

Carlos Andrade krlosgilson em gmail.com
Qua Jan 8 01:15:34 -03 2020


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