Do not understand high estimates of index scan vs seq scan
| От | Antonio Goméz Soto |
|---|---|
| Тема | Do not understand high estimates of index scan vs seq scan |
| Дата | |
| Msg-id | 51C307DC.2030901@gmail.com обсуждение исходный текст |
| Ответы |
Re: Do not understand high estimates of index scan vs seq scan
|
| Список | pgsql-general |
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-2117: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'::timestampwith 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)
В списке pgsql-general по дате отправления: