José Flávio Jr. escreveu:
> 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:
> 
Há algo de estranho. Qual a versão do PostgreSQL? Mostre-nos a definição da
tabela e os índices.

euler=# \d foo
            Table "public.foo"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 cidade | character varying(80) |

euler=# alter table foo add column cidade_fts tsvector;
ALTER TABLE
euler=# update foo set cidade_fts=to_tsvector(foo::text);
UPDATE 5564
euler=# select * from foo limit 10;
     cidade      |      cidade_fts
-----------------+----------------------
 Cumbe           | 'cumb':1
 Acrelândia      | 'acrelând':1
 Assis Brasil    | 'assis':1 'brasil':2
 Brasiléia       | 'brasil':1
 Bujari          | 'bujar':1
 Capixaba        | 'capixab':1
 Cruzeiro do Sul | 'cruzeir':1 'sul':3
 Epitaciolândia  | 'epitaciolând':1
 Feijó           | 'feij':1
 Jordão          | 'jordã':1
(10 rows)

euler=# create index fooi on foo using gin (cidade_fts);
CREATE INDEX
euler=# explain select * from foo where cidade_fts @@ to_tsquery('assis');
                            QUERY PLAN
-------------------------------------------------------------------
 Bitmap Heap Scan on foo  (cost=4.26..8.28 rows=1 width=39)
   Recheck Cond: (cidade_fts @@ to_tsquery('assis'::text))
   ->  Bitmap Index Scan on fooi  (cost=0.00..4.26 rows=1 width=0)
         Index Cond: (cidade_fts @@ to_tsquery('assis'::text))
(4 rows)

euler=# drop index fooi;
DROP INDEX
euler=# explain select * from foo where cidade_fts @@ to_tsquery('assis');
                      QUERY PLAN
------------------------------------------------------
 Seq Scan on foo  (cost=0.00..160.46 rows=1 width=39)
   Filter: (cidade_fts @@ to_tsquery('assis'::text))
(2 rows)


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

Responder a