Pessoal,

Tenho esses 2 índices numa tabela


CREATE INDEX idx_tb_processo_nr_processo
  ON core.tb_processo
  USING btree
  (nr_processo COLLATE pg_catalog."default");

  CREATE INDEX idx_tb_processo_nr_processo_ubd
  ON core.tb_processo
  USING btree
  (lower(to_ascii(nr_processo::text)) COLLATE pg_catalog."default");



explain analyze
select * from tb_processo
WHERE  nr_processo  LIKE '0001949-27.2015.8.17.8201%'

Index Scan using idx_tb_processo_nr_processo on tb_processo
 (cost=0.56..8.58 rows=459 width=240) (actual time=0.047..0.083 rows=1
loops=1)
  Index Cond: (((nr_processo)::text >= '0001949-27.2015.8.17.8201'::text)
AND ((nr_processo)::text < '0001949-27.2015.8.17.8202'::text))
  Filter: ((nr_processo)::text ~~ '0001949-27.2015.8.17.8201%'::text)
Total runtime: 0.105 ms



explain analyze
select * from tb_processo
WHERE  lower ( to_ascii ( nr_processo ) ) LIKE '0001949-27.2015.8.17.8201%'

Seq Scan on tb_processo  (cost=0.00..188212.14 rows=26803 width=240)
(actual time=411.008..562.486 rows=1 loops=1)
  Filter: (lower(to_ascii((nr_processo)::text)) ~~
'0001949-27.2015.8.17.8201%'::text)
  Rows Removed by Filter: 352791
Total runtime: 562.504 ms


Por que a 1a consulta usa o índice idx_tb_processo_nr_processo e a 2a não
usa o índice idx_tb_processo_nr_processo_ubd

Atenciosamente,
Luiz Carlos
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a