On 11.08.2011 23:06, Robert Haas wrote:
Comments, testing, review appreciated...
I would've expected this to use an index-only scan: postgres=# CREATE TABLE foo AS SELECT generate_series(1,100000) AS id; SELECT 100000 postgres=# CREATE INDEX i_foo ON foo (id) WHERE id = 10; CREATE INDEX postgres=# VACUUM ANALYZE foo; VACUUM postgres=# EXPLAIN SELECT id FROM foo WHERE id = 10; QUERY PLAN ----------------------------------------------------------------- Index Scan using i_foo on foo (cost=0.00..8.27 rows=1 width=4) Index Cond: (id = 10) (2 rows) If it's not a predicate index, then it works: postgres=# DROP INDEX i_foo; DROP INDEX postgres=# EXPLAIN SELECT id FROM foo WHERE id = 10; QUERY PLAN ----------------------------------------------------------------------- Index Only Scan using i_foo2 on foo (cost=0.00..8.28 rows=1 width=4) Index Cond: (id = 10) (2 rows) -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers