Index on a function and SELECT DISTINCT
От | Adrian Holovaty |
---|---|
Тема | Index on a function and SELECT DISTINCT |
Дата | |
Msg-id | 200501141232.13139.postgresql@holovaty.com обсуждение исходный текст |
Ответы |
Re: Index on a function and SELECT DISTINCT
|
Список | pgsql-performance |
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? Thanks, Adrian
В списке pgsql-performance по дате отправления: