[firebase-br] Função com melhor desempenho: Max ou First 1
Carlos Andrade
krlosgilson em gmail.com
Sex Jan 10 14:33:48 -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 imediato 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