Re: Index on a function and SELECT DISTINCT

From: Frank Wiles <frank(at)wiles(dot)org>
To: Adrian Holovaty <postgresql(at)holovaty(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Index on a function and SELECT DISTINCT
Date: 2005-01-17 16:09:42
Message-ID: 20050117100942.692be97a.frank@wiles.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Fri, 14 Jan 2005 12:32:12 -0600
Adrian Holovaty <postgresql(at)holovaty(dot)com> wrote:

> If I have this table, function and index in Postgres 7.3.6 ...
>
> """
> CREATE TABLE news_stories (
> id serial primary key NOT NULL,
> pub_date timestamp with time zone NOT NULL,
> ...
> )
> CREATE OR REPLACE FUNCTION get_year_trunc(timestamp with time zone)
> returns timestamp with time zone AS 'SELECT date_trunc(\'year\',$1);'
> LANGUAGE 'SQL' IMMUTABLE;
> CREATE INDEX news_stories_pub_date_year_trunc ON
> news_stories( get_year_trunc(pub_date) );
> """
>
> ...why does this query not use the index?
>
> db=# EXPLAIN SELECT DISTINCT get_year_trunc(pub_date) FROM
> news_stories;
> QUERY PLAN
> ---------------------------------------------------------------------
> ------------
> Unique (cost=59597.31..61311.13 rows=3768 width=8)
> -> Sort (cost=59597.31..60454.22 rows=342764 width=8)
> Sort Key: date_trunc('year'::text, pub_date)
> -> Seq Scan on news_stories (cost=0.00..23390.55
> rows=342764
> width=8)
> (4 rows)
>
> The query is noticably slow (2 seconds) on a database with 150,000+
> records. How can I speed it up?

It's doing a sequence scan because you're not limiting the query in
the FROM clause. No point in using an index when you're asking for
the entire table. :)

---------------------------------
Frank Wiles <frank(at)wiles(dot)org>
http://www.wiles.org
---------------------------------

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Tom Lane 2005-01-17 16:13:00 Re: Performance problem from migrating between versions!
Previous Message Kaloyan Iliev Iliev 2005-01-17 15:37:31 Performance problem from migrating between versions!