Re: <= Index.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: <= Index.
Дата
Msg-id 28976.1017588489@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: <= Index.  ("Greg Sikorski" <gte@atomicrevs.demon.co.uk>)
Список pgsql-admin
"Greg Sikorski" <gte@atomicrevs.demon.co.uk> writes:
> cmaster=# explain analyze SELECT user_id,channel_id FROM levels WHERE
> suspend_expires <= 1017589362 AND suspend_expires <> 0;
> NOTICE:  QUERY PLAN:

> Seq Scan on levels  (cost=0.00..13709.09 rows=2609 width=8) (actual
> time=208.98..1521.08 rows=17 loops=1)
> Total runtime: 1521.29 msec

First question is *can* the thing use an index?  (Try "set enable_seqscan
to off" then explain again.)  If not, it's probably a datatype
compatibility issue --- you'll need to quote or explicitly cast the
constant 1017589362 to match the type of suspend_expires.

If it could use an index but chooses not to, at least part of the
problem is the factor-of-100 overestimate in the number of matching
rows.  That might be alleviated by increasing the statistics target
for the suspend_expires column.  (ALTER TABLE SET STATISTICS, then
ANALYZE or VACUUM ANALYZE.)

You might also find that reducing random_page_cost produces better
indexscan cost estimates for your environment.

            regards, tom lane

В списке pgsql-admin по дате отправления:

Предыдущее
От: "Greg Sikorski"
Дата:
Сообщение: Re: <= Index.
Следующее
От: "Greg Sikorski"
Дата:
Сообщение: Re: <= Index.