Re: Trigram is slow when 10m rows

From: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
To: Aaron Lewis <the(dot)warl0ck(dot)1989(at)gmail(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Trigram is slow when 10m rows
Date: 2016-11-13 21:30:14
Message-ID: CAMkU=1wRkV8P602+Aa9eJ=+WT5JfJRXkq6SA-H4U=BzJ6sdj6Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Sun, Nov 13, 2016 at 3:54 AM, Aaron Lewis <the(dot)warl0ck(dot)1989(at)gmail(dot)com>
wrote:

> I have a simple table with Trigram index,
>
> create table mytable(hash char(40), title text);
> create index title_trgm_idx on mytable using gin(title gin_trgm_ops);
>
> When I run a query with 10m rows, it uses the Trigram index, but takes
> 3s to execute, very slow.
> (I have 80m rows, but only inserted 10m for testing purpose)
>
> test=# select count(*) from mytable;
> count
> ----------
> 13971887
> (1 row)
>
> test=# explain analyze select * from mytable where title ilike 'x264';
> QUERY PLAN
> ------------------------------------------------------------
> --------------------------------------------------------------------------
> Bitmap Heap Scan on mytable (cost=462.69..5639.67 rows=1380
> width=83) (actual time=2937.308..2937.308 rows=0 loops=1)
> Recheck Cond: (title ~~* 'x264'::text)
> Rows Removed by Index Recheck: 11402855
> Heap Blocks: exact=39557 lossy=158010
> -> Bitmap Index Scan on title_trgm_idx (cost=0.00..462.35
> rows=1380 width=0) (actual time=342.440..342.440 rows=1220793 loops=1)
> Index Cond: (title ~~* 'x264'::text)
> Planning time: 0.611 ms
> Execution time: 2937.729 ms
> (8 rows)
>
> Any ideas to speed things up?
>

What version of postgresql and pg_trgm are you using? It might work better
under 9.6/1.3

Since your query doesn't use wildcards, it is probably more well suited to
a regular btree index, perhaps with citext.

Cheers,

Jeff

In response to

Browse pgsql-general by date

  From Date Subject
Next Message aws backup 2016-11-13 21:33:45 Re: pg_dumpall: could not connect to database "template1": FATAL:
Previous Message aws backup 2016-11-13 21:29:30 Re: pg_dumpall: could not connect to database "template1": FATAL: