Em 23-07-2013 16:53, Danilo Silva escreveu:

    Quando você coloca a função na visão e ainda filtra por essa coluna
    na sua consulta, o planejador não consegue otimizar.

    Prefira manter a visão sem a função na coluna que você vai filtrar e
    faça:
    1) a função na cláusula WHERE final;
    2) talvez, um índice por função (functional index).

A última linha da função estava como *LANGUAGE plpgsql VOLATILE",
alterei de VOLATILE para IMMUTABLE para criar o index:

CREATE INDEX historico_tb011_function_idx ON historico_tb011
(f_soma_diautil(datahist,horahist,CURRENT_DATE,LOCALTIME(0),codtb001,'',''));

Mas ocorre o erro "ERROR:  functions in index expression must be marked
IMMUTABLE".

Estou errando em algum lugar?

Sim. Você não pode criar um índice funcional com uma expressão variável (como LOCALTIME) pois isso depende... do momento atual :)

[]s

__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to