[firebase-br] Índice para campo tipo Date

Gladiston Santana gladiston em vidy.com.br
Qua Jan 25 11:32:16 -03 2017


O seu where é uma expressão, você pode criar um indice em forma de
expressão que coincida com o seu where e talvez fique mais rapido.
Eu digo talvez porque nunca precisei criar no FB um indice em forma de
expressão porque em geral quando vão ser usados já existe um filtro por
cima que delineia a expressão sob poucos registros e não sobre a tabela
inteira.
Para ser sincero, seu exemplo tá muito mal feito.
Eu acho que você está fazendo isso para desprezar as horas num campo do
tipo timestamp, se for isso, você pode usar CAST(data as date) =:p_data
Em sistemas mais antigos quando o Delphi não tinha o .AsDate eu usava
between '01.01.2017 00:00' and '01.01.2017 23:59'.
Qualquer coisa seria melhor do que decodificar dia, mes e ano e usa-los
separadamente.

Em 25 de janeiro de 2017 09:43, Fábio P. Santos <fpsgyn em gmail.com> escreveu:

> bom dia,,,
>
>
> tenho uma tabela com um campo to tipo DATE...
>
> executo uma select com o seguinte WHERE:
>
>             where
>             extract (month from data) = :mes
>             and extract (year  from data) = :ano
>             and extract (day  from data) = :idia
>
> na tabela foi criado um índice para o campo data, mas mesmo assim a
> consulta continua lenta e analisando a performance pelo IbExpert ele me
> acusa a lentidão nesta tabela...
>
> como criar um índice especifico para este caso ? ou existe outra solução ?
>
> Obrigado.....



Mais detalhes sobre a lista de discussão lista