hi Harald,
      I reboot the machine and create index,it works.thanks.

2009/2/26 Harald Fuchs <hari.fu...@gmail.com>

> In article <8f750b7c0902250259w6065515as350aca3b5d7d8...@mail.gmail.com>,
> Tony Liao <tonyl...@yuehetone.com> writes:
>
> > hi all,
> >       I have a table table_A (id serial,prefix varchar),for example.
> >       now I want to get the id of "johnsmith"'s prefix match
> table_A.prefix,so
> > I do select id from table_A where 'johnsmith' like prefix||'%'  ,the
> table_A is
> > very large so I would like to make index. create table_A_index on table_A
> > (prefix)
> >       I try to explain analyze,but it doesn't work ,it use seq scan.
> >       I try another index. drop index table_A_index; create table_A_index
> on
> > table_A(prefix varchar_pattern_ops); it doesn't work,too.
>
> If I understand you correctly, the "prefix" contrib package is what
> you need:
>
>  CREATE TABLE tableA (
>    id serial NOT NULL,
>    prefix prefix_range NOT NULL,
>    PRIMARY KEY (id)
>  );
>
>  CREATE INDEX tableA_prefix_ix on tableA
>  USING gist (prefix gist_prefix_range_ops);
>
>  COPY tableA (prefix) FROM stdin;
>  john
>  tom
>  anne
>  jim
>  \.
>
>  INSERT INTO tableA (prefix)
>  SELECT x || 'test'
>  FROM generate_series (1, 10000) g(x);
>
>  ANALYZE tableA;
>
>  EXPLAIN ANALYZE
>  SELECT id, prefix
>  FROM tableA
>  WHERE prefix @> 'johnsmith';
>
> will return something like that:
>
>  Bitmap Heap Scan on tablea  (cost=4.33..32.10 rows=10 width=19) (actual
> time=0.035..0.036 rows=1 loops=1)
>   Recheck Cond: (prefix @> 'johnsmith[]'::prefix_range)
>   ->  Bitmap Index Scan on tablea_prefix_ix  (cost=0.00..4.33 rows=10
> width=0) (actual time=0.026..0.026 rows=1 loops=1)
>         Index Cond: (prefix @> 'johnsmith[]'::prefix_range)
>  Total runtime: 0.133 ms
>
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin
>

Reply via email to