From: | "Alexander M(dot) Pravkin" <fduch(at)antar(dot)bryansk(dot)ru> |
---|---|
To: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Стоимость запроса в EXPLAIN с LIMIT и OFFSET |
Date: | 2011-11-28 07:41:18 |
Message-ID: | 20111128074118.GG9642@dyatel.antar.bryansk.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Если проходиться по всей таблице, то нет смысла делать limit/offset
кроме как для экономии памяти. Тут может помочь cursor:
DECLARE my_cursor CURSOR FOR SELECT ...
FETCH NEXT 10 FROM my_cursor;
FETCH ...
...
CLOSE my_cursor;
On Mon, 2011-11-28 at 01:00 +0400, Dmitry E. Oboukhov wrote:
> SELECT
> *
> FROM
> table
> ORDER BY
> column
> LIMIT
> 10
> OFFSET
> 100
>
> стоимость запроса растет вместе с ростом OFFSET.
>
>
> есть необходимость написать некую программу которая обойдет всю
> большую таблицу именно в порядке сортировки по конкретному столбику и
> пересчитает один из столбиков и сделает апдейт.
>
> индекс по column есть.
>
> если в начале работы основные затраты были на собственно расчеты. то
> ближе к середине в основном висит в БД тупо делая этот SELECT
> десятками секунд.
>
> Вопрос. как можно ускорить данный запрос?
> --
>
> . ''`. Dmitry E. Oboukhov
> : :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
> `. `~’ GPGKey: 1024D / F8E26537 2006-11-21
> `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
--
Alexander M. Pravkin
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry E. Oboukhov | 2011-11-28 19:28:41 | Добавить что-то в ENUM |
Previous Message | Nikolay Samokhvalov | 2011-11-27 21:17:36 | Re: [pgsql-ru-general] Стоимость запроса в EXPLAIN с LIMIT и OFFSET |