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

Responder a