Re: [HACKERS] Performance of MIN() and MAX()

Поиск
Список
Период
Сортировка
От Gene Sokolov
Тема Re: [HACKERS] Performance of MIN() and MAX()
Дата
Msg-id 043301befea6$7af511a0$0d8cdac3@aktrad.ru
обсуждение исходный текст
Ответ на Re: [HACKERS] Performance of MIN() and MAX()  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: [HACKERS] Performance of MIN() and MAX()
Список pgsql-hackers
From: Tom Lane <tgl@sss.pgh.pa.us>
> > I was under impression that when max(<primary key>) is called, it should
> > just take the value from the index. I believe it should not do any kind
of
> > scan. But, in fact, it scans the table.
>
> You are mistaken.  Postgres has no idea that min() and max() have any
> semantics that have anything to do with indexes.  I would like to see
> that optimization myself, but it's not a particularly easy thing to add
> given the system structure and the emphasis on datatype extensibility.
>
> > it's a show stopper for us.
>
> You might be able to hack around the issue with queries like
>
> SELECT x FROM table ORDER BY x LIMIT 1;
> SELECT x FROM table ORDER BY x DESC LIMIT 1;

It is a real show stopper. No luck completely, the indexes are ignored:

*************************************************************
[PostgreSQL 6.5.0 on i386-unknown-freebsd3.2, compiled by gcc 2.7.2.1]

bars=> create index bars_id on itemsbars(id);
CREATE
bars=> explain select id from itemsbars order by id limit 1;
NOTICE:  QUERY PLAN:

Sort  (cost=44404.41 rows=969073 width=4) ->  Seq Scan on itemsbars  (cost=44404.41 rows=969073 width=4)

EXPLAIN
bars=> \d itemsbars
Table    = itemsbars
+--------------------+----------------------------------+-------+
|       Field        |              Type                | Length|
+--------------------+----------------------------------+-------+
| id                 | int4 not null default nextval('" |     4 |
| itemid             | int4 not null                    |     4 |
| interv             | int4 not null                    |     4 |
| stats              | datetime not null                |     8 |
| endts              | datetime not null                |     8 |
| isactive           | bool not null                    |     1 |
| opn                | float8 not null                  |     8 |
| high               | float8 not null                  |     8 |
| low                | float8 not null                  |     8 |
| cls                | float8 not null                  |     8 |
| vol                | int4 not null                    |     4 |
+--------------------+----------------------------------+-------+
Indices:  bars_complex2         bars_endts         bars_id         bars_interv         bars_itemid         bars_stats
     itemsbars_pkey
 







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

Предыдущее
От: Theo Kramer
Дата:
Сообщение: ISO dates with European Format
Следующее
От: Dmitry Samersoff
Дата:
Сообщение: Explicit direction of index using