Nós temos muito:
select count(*) from TBL where XDATE between ? and ? and FLD = ?;
Esperamos aumentar o desempenho ajustando o índice na coluna XDATE (que tem o tipo DATE ).
Que tipo de índices mais adequado para o tipo DATE e entre a condição?
Intervalos - especialmente intervalos de datas - podem ser difíceis de ajustar. Há uma palavra de diferença entre isso ...
... e isto ...
Você desejaria caminhos de acesso radicalmente diferentes para essas duas consultas. Um índice ajudará com o primeiro, mas provavelmente será desastroso para o segundo (dependendo dos volumes de dados envolvidos).
O outro problema com datas de indexação diz respeito ao elemento de tempo. Se
xdate
contiver o elemento de tempo, potencialmente você terá 86.400 valores diferentes para cada dia do calendário. Na maioria dos casos, quando fazemos uma pesquisa de intervalo de datas, queremos todos os resultados do dia, independentemente da hora.Não podemos dar uma recomendação absoluta, porque você não forneceu detalhes suficientes, mas meu conselho geral seria:
create index tbl_xdate_idx on tbl(trunc(xdate))
.Com os detalhes fornecidos, o índice de duas colunas pode ser sensato:
CREATE INDEX tbl_index ON tbl(fld,xdate);
Mas é claro que tudo depende dos seus dados.
Para coletar dados basta executar:
E compare os resultados. Ou edite sua pergunta com esses resultados.