[firebase-br] MAX() com índice

Bruno Dias brunodila em gmail.com
Seg Maio 27 11:20:31 -03 2013


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



Mais detalhes sobre a lista de discussão lista