Pedro B. Alves wrote:

> é que por exemplo, se você executar isso no oracle:
> select * from foo where upper(nome) = 'EULER';
> você estara quebrando o indice do campo nome..
>  
> isso que eu me refiro, se eu fizer a mesma coisa no postgresql, irá
> quebrar o indice da coluna nome ou não?????
> 
Não. Veja o exemplo abaixo que fiz. O índice deve ser construído com a
função assim ao executar a consulta você utilizará o índice.


>     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=#
> 



-- 
  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