Re: Tsearch2 Initial Search Speed

From: Alan Hodgson <ahodgson(at)simkin(dot)ca>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: Tsearch2 Initial Search Speed
Date: 2008-06-16 18:24:57
Message-ID: 200806161124.57543@hal.medialogik.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Monday 16 June 2008, Howard Cole <howardnews(at)selestial(dot)com> wrote:
> Hi, I am looking to improve the initial query speed for the following
> query:
>
> select email_id from email, to_tsquery('default','example') as q where
> q@@fts;
>
> This is running on 8.2.4 on Windows Server 2K3.
>
> The initial output from explain analyse is as follows.
>
> "Nested Loop (cost=8.45..76.70 rows=18 width=8) (actual
> time=5776.347..27364.248 rows=14938 loops=1)"
> " -> Function Scan on q (cost=0.00..0.01 rows=1 width=32) (actual
> time=0.023..0.024 rows=1 loops=1)"
> " -> Bitmap Heap Scan on email (cost=8.45..76.46 rows=18 width=322)
> (actual time=5776.314..27353.344 rows=14938 loops=1)"
> " Filter: (q.q @@ email.fts)"
> " -> Bitmap Index Scan on email_fts_index (cost=0.00..8.44
> rows=18 width=0) (actual time=5763.355..5763.355 rows=15118 loops=1)"
> " Index Cond: (q.q @@ email.fts)"
> "Total runtime: 27369.091 ms"
>
> Subsequent output is considerably faster. (I am guessing that is because
> email_fts_index is cached.

It's because everything is cached, in particular the relevant rows from
the "email" table (accessing which took 22 of the original 27 seconds).

The plan looks good for what it's doing.

I don't see that query getting much faster unless you could add a lot more
cache RAM; 30K random IOs off disk is going to take a fair bit of time
regardless of what you do.

--
Alan

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Chris Mair 2008-06-16 19:26:14 Re: [pgsql-performance] function difference(geometry, geometry) is SLOW!
Previous Message Howard Cole 2008-06-16 17:55:43 Tsearch2 Initial Search Speed