Testei aqui e também não usou os índices, mas tinham poucas linhas na tabela.
Walter, sua tabela possui muitas linhas? Pergunto isso porquê se são poucas linhas, o otimizador pode concluir (corretamente) que um full scan é mais rápido do que pesquisar os índices. Se tiver muitas linhas na sua tabela, aí não entendi mesmo... :) >-----Mensagem original----- >De: Walter Cruz [mailto:[EMAIL PROTECTED] >Enviada em: sexta-feira, 24 de março de 2006 16:48 >Para: [email protected] >Assunto: Re: [PostgreSQL-Brasil] RES: RES: Melhor maneira de fazer >pesquisas ignorando acentos e maíusculas/minúsculas > > >Bom, eu criei os indíces aqui, pensando nas várias possibilidades >(okey, é só um teste mesmo, vamos criar índices a vontade!) > >CREATE INDEX idx_nomemunic > ON tab_municipios > (nomemunic); > >CREATE INDEX idx_nomemunic_upper_to_ascii > ON tab_municipios > (upper(to_ascii(nomemunic))); > >CREATE INDEX idx_nomemuniclower > ON tab_municipios > (lower(nomemunic)); > >CREATE INDEX idx_nomemuniclower_to_ascii > ON tab_municipios > (lower(to_ascii(nomemunic))); > >CREATE INDEX idx_nomemunicupper > ON tab_municipios > (upper(nomemunic)); > > >Agora, as queries :) > >EXPLAIN SELECT * > FROM tab_municipios > WHERE lower(to_ascii(nomemunic,'LATIN1')) = lower(to_ascii('sÃo >PaULo','LATIN1')) > >RESULTADO: >"Seq Scan on tab_municipios (cost=0.00..198.37 rows=28 width=142)" >" Filter: (lower(to_ascii((nomemunic)::text, 'LATIN1'::name)) = 'sao >paulo'::text)" > >_____ > >agora, com UPPER: > >EXPLAIN SELECT * > FROM tab_municipios > WHERE upper(to_ascii(nomemunic,'LATIN1')) = upper(to_ascii('sÃo >PaULo','LATIN1')) > >RESULTADO: >"Seq Scan on tab_municipios (cost=0.00..198.37 rows=28 width=142)" >" Filter: (upper(to_ascii((nomemunic)::text, 'LATIN1'::name)) = 'SAO >PAULO'::text)" > > >Ele executa, mas não usa os indíces. E agora? > >[]'s >- Walter >_______________________________________________ >Grupo de Usuários do PostgreSQL no Brasil >http://www.postgresql.org.br > _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil http://www.postgresql.org.br
