Amigo Euler, acho que é mais simples do que você imagina.
Tenho uma tabela com vários campos do tipo *text*. Quero submeter consultas
sobre eles. Assim, criei um campo do tipo *tsvector*
e povoei usando *to_tsvector()* concatenando três desses campos *text*. Após
isso, criei o índice GIN sobre o campo *tsvector*. Veja abaixo:
*ALTER TABLE projeto_pesquisa ADD COLUMN vetorfts tsvector;
UPDATE projeto_pesquisa SET vetorfts=to_tsvector(introducao || ' ' ||
justificativa || ' ' || metodologia);
CREATE INDEX idx_vetorfts_projeto_pesquisa ON projeto_pesquisa USING
gin(vetorfts);*
Por fim, submeto essa consulta:
*SELECT introducao, justificativa, metodologia
FROM projeto_pesquisa
WHERE vetorfts @@ to_tsquery('educação');*
Resultado do EXPLAIN:
*Seq Scan on projeto_pesquisa (cost=0.00..4269.80 rows=10 width=335)
(actual time=0.182..483.963 rows=1451 loops=1)
Filter: (vetorfts @@ to_tsquery('educação'::text))
Total runtime: 484.688 ms*
Mesmo usando *SET ENABLE_SEQSCAN TO OFF* o resultado é o mesmo, ou seja, não
está usando o índice GIN criado.
--
[]'s
José Flávio M. V. Júnior
2009/12/7 Euler Taveira de Oliveira <[email protected]>
> José Flávio Jr. escreveu:
> > Já tentei forçar o uso do índice com o enable seqscan off mas mesmo
> > assim ele não usa o índice criado para as querys sobre o campo tsvector.
> >
> Sem ver a definição das tabelas e índices, a consulta e o explain fica
> difícil
> supor algo.
>
>
> --
> Euler Taveira de Oliveira
> http://www.timbira.com/
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral