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

Responder a