Hi all, I do not understand why postgreSQL estimates an index scan only half as fast as a seq scan: system=# explain select * from queuelog; QUERY PLAN ------------------------------------------------------------------- Seq Scan on queuelog (cost=0.00..20530.29 rows=610929 width=148) (1 row) system=# explain select * from queuelog where queuelog.start_time >= '2013-05-20 8:30' and queuelog.start_time <= '2013-06-21 17:0'; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------- Index Scan using queuelog_start_time on queuelog (cost=0.00..13393.18 rows=316090 width=148) Index Cond: ((start_time >= '2013-05-20 08:30:00+02'::timestamp with time zone) AND (start_time <= '2013-06-21 17:00:00+02'::timestamp with time zone)) Is that solely because it nees to compare each index value to a fixed date/time? I would assume the index would be much smaller then the actual data, or is it only based on the amount of rows? Thanks, Antonio PS: here's the queuelog definition: Table "public.queuelog" Column | Type | Modifiers ------------------+--------------------------+------------------------------------------------------- id | integer | not null default nextval('queuelog_id_seq'::regclass) created | timestamp with time zone | not null default now() lastupdate | timestamp with time zone | not null default now() start_time | timestamp with time zone | not null default now() sessionid | character varying(50) | not null default ''::character varying call_seq | integer | not null default 1 queue | integer | not null default 1 dial | character varying(24) | not null default ''::character varying agent | integer | not null default 1 agents | integer | not null default 0 agents_logged_in | integer | not null default 0 agents_avail | integer | not null default 0 queue_pos | integer | not null default 1 waittime | numeric | not null default (0)::numeric ringtime | numeric | not null default (0)::numeric talktime | numeric | not null default (0)::numeric cause | integer | not null default 16 from_function | character varying(24) | from_lookupid | integer | not null default 1 to_function | character varying(24) | to_lookupid | integer | not null default 1 maxcallers | integer | not null default 0 Indexes: "queuelog_pkey" PRIMARY KEY, btree (id) "queuelog_start_time" btree (start_time) -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general