[firebase-br] MAX() com índice

Ricardo Rodrigues ricardopd em gmail.com
Seg Maio 27 11:25:31 -03 2013


Se não me falha a memória é indicado cria um índica ascendente para esses
tipos de select para uma melhor performance.

select cast(coalesce(max(ID_BANDA_LARGA)+1,1) as integer)
from TB_BANDA_LARGA
WHERE ID_BANDA_LARGA IS NOT NULL


Em 27 de maio de 2013 11:20, Bruno Dias <brunodila em gmail.com> escreveu:

> Bom dia!
>
> Tenho a seguinte tabela:
>
> CREATE TABLE TB_BANDA_LARGA (
>     ID_BANDA_LARGA  INTEGER NOT NULL,
>     DESCRICAO       VARCHAR(50),
>     VALOR_MENSAL    NUMERIC(9,2),
>     VALOR_ADESAO    NUMERIC(9,2)
> );
>
> ALTER TABLE TB_BANDA_LARGA ADD CONSTRAINT PK_TB_BANDA_LARGA PRIMARY KEY
> (ID_BANDA_LARGA);
>
> Quando faço um select o Firebird não utiliza o índice:
>
> SELECT id_banda_larga
> from TB_BANDA_LARGA
>
> Somente quando mando ordenar pela chave primaria que o Firebird usa o
> índice:
>
>
> SELECT id_banda_larga
> from TB_BANDA_LARGA
> order by id_banda_larga
>
> O problema é que estou fazendo um select com o MAX e o Firebird não utiliza
> o plano de execução, existe alguma alternativa?
>
> select cast(coalesce(max(ID_BANDA_LARGA)+1,1) as integer)
> from TB_BANDA_LARGA
> WHERE ID_BANDA_LARGA IS NOT NULL
>
> At.,
>
> Bruno Lage
> lagix.com.br
> Skype: brunodila
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista