Составной индекс: как заменить OFFSET на WHERE?

From: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Составной индекс: как заменить OFFSET на WHERE?
Date: 2016-05-24 13:24:29
Message-ID: 20160524132429.GB15020@vdsl.uvw.ru
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

таблица, col1 и col2 не коррелируют между собой.

col1, col2

1 2
1 3
2 1
2 2
2 3
3 4
3 7
1 1

и так далее

имеем BTREE(col1, col2)

далее пользователь указывает начало для col1 и ему показываем пейджер

SELECT
*
FROM
table
WHERE
col1 >= ?
ORDER BY
col1, col2
LIMIT
50
OFFSET
?

теперь хотим OFFSET перенести в WHERE

Получить что-то вроде

WHERE
bla(col1, col2) > bla(7,4)
ORDER BY
col1, col2
LIMIT
50

По идее индекс может отвечать на подобный вопрос и имеет подобный
итератор. А вот на SQL можно ли подобный запрос написать?

--

. ''`. 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

Browse pgsql-ru-general by date

  From Date Subject
Next Message Vladimir Borodin 2016-07-04 07:12:45 Re: На правах рекламы
Previous Message Teodor Sigaev 2016-05-10 09:02:54 Re: [pgsql-ru-general] GIN индекс - веса