Matthew Wakeling wrote:
On Tue, 17 Jun 2008, Howard Cole wrote:
They both appear to do a scan on the email table (Why?).
The indexes don't contain copies of the row data. They only contain
pointers to the rows in the table. So once the index has been
consulted, Postgres still needs to look at the table to fetch the
actual rows. Of course, it only needs to bother looking where the
index points, and that is the benefit of an index.
Matthew
Thanks for your patience with me here Matthew, But what I don't
understand is why it needs to do a scan on email. If I do a query that
uses another index, then it uses the index only and does not scan the
email table. The scan on the fts index takes 6 seconds, which presumably
returns email_id's (the email_id being the primary key) - what does it
then need from the email table that takes 22 seconds?
e.g.
triohq=> explain select email_id from email where email_directory_id=1;
QUERY PLAN
--------------------------------------------------------------------------------
-------------
Index Scan using email_email_directory_id_idx on email
(cost=0.00..129.01 rows
=35 width=8)
Index Cond: (email_directory_id = 1)
(2 rows)
--
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance