[firebase-br] MAX() com índice

Carlos H. Cantu listas em warmboot.com.br
Seg Maio 27 19:50:22 -03 2013


Crie um indices descendente para o campo que vc está usando no MAX.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

BD> Bom dia!

BD> Tenho a seguinte tabela:

BD> CREATE TABLE TB_BANDA_LARGA (
BD>     ID_BANDA_LARGA  INTEGER NOT NULL,
BD>     DESCRICAO       VARCHAR(50),
BD>     VALOR_MENSAL    NUMERIC(9,2),
BD>     VALOR_ADESAO    NUMERIC(9,2)
BD> );

BD> ALTER TABLE TB_BANDA_LARGA ADD CONSTRAINT PK_TB_BANDA_LARGA PRIMARY KEY
BD> (ID_BANDA_LARGA);

BD> Quando faço um select o Firebird não utiliza o índice:

BD> SELECT id_banda_larga
BD> from TB_BANDA_LARGA

BD> Somente quando mando ordenar pela chave primaria que o Firebird usa o
BD> índice:


BD> SELECT id_banda_larga
BD> from TB_BANDA_LARGA
BD> order by id_banda_larga

BD> O problema é que estou fazendo um select com o MAX e o Firebird não utiliza
BD> o plano de execução, existe alguma alternativa?

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

BD> At.,

BD> Bruno Lage
BD> lagix.com.br
BD> Skype: brunodila
BD> ______________________________________________
BD> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
BD> Para saber como gerenciar/excluir seu cadastro na lista, use:
BD> http://www.firebase.com.br/fb/artigo.php?id=1107
BD> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista