GIN performance (postgresql.org websearch part 2)

As I finished loading the approximately 550,000 emails in our archives into my UTF8 encoded database again (bad encoding earlier), I decided to run a quick benchmark of the different ways of doing fulltext search on it with tsearch2, partially because Devrim requested it. I ran the same query a couple of times to bring things into the cache, and then saw very stable performance on all the queries. The query I ran was:

explain analyze select count(*) from messages where fti @@ plainto_tsquery('magnus hagander');

Which should be simple and self-explaining. I got the following search times:

  • tsearch2 with no index: ~6000 milliseconds (6 seconds)
  • tsearch2 with GiST index: ~250ms (0.25 seconds)
  • tsearch2 with GIN index: ~6ms (very fast)

This shows that tsearch2 with GIN is a lot faster than the GiST version we had in 8.1. Updates are more expensive, but when your dataset has a lot more read than write, then GIN will definitly be a big win.


Add comment

New comments can no longer be posted on this entry.

Conferences

I speak at and organize conferences around Open Source in general and PostgreSQL in particular.

Upcoming

FOSDEM PGDay 2027
Jan 28-31, 2027
Brussels, Belgium
Nordic PGDay 2027
Mar 16, 2027
Stockholm, Sweden

Past

PGConf.EU 2026
Oct 20-23, 2026
Valencia, Spain
PGDay Lowlands 2026
Sep 10, 2026
Utrecht, Netherlands
PGDay.UK 2026
Sep 8, 2026
London, UK
pgconf.dev 2026
May 19-22, 2026
Vancouver, Canada
pgDay.paris 2026
Mar 26, 2026
Paris, France
More past conferences