Pedro B. Alves wrote: > Pessoal, gostaria de saber se o uso de funçõs como COALESCE, SUM, MAX, > MIN, etc.. na clausula where quebra o uso dos indices. > e qual o problema de usar esses tipos de fuções com relação a performace > de uma query???? > Acho que funções de agregações tais com SUM, MAX, AVG, MIN não seriam utilizadas no WHERE certo? Funções de agregação não podem ser utilizadas no WHERE. No GROUP BY ou HAVING sim.
Você pode perfeitamente criar índices para funções como: regression=# create table foo (id int, nome varchar(10)); CREATE TABLE regression=# create index nome_idx on foo(upper(nome)); CREATE INDEX regression=# set enable_seqscan to off; SET regression=# explain select * from foo where upper(nome) = 'EULER'; QUERY PLAN ----------------------------------------------------------------------- Bitmap Heap Scan on foo (cost=4.31..14.49 rows=8 width=18) Recheck Cond: (upper((nome)::text) = 'EULER'::text) -> Bitmap Index Scan on nome_idx (cost=0.00..4.31 rows=8 width=0) Index Cond: (upper((nome)::text) = 'EULER'::text) (4 registros) regression=# Quanto ao COALESCE, não vejo como utilizá-lo em um índice. Mas você poderia indexar a coluna que está presente nele. -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral