Составной индекс: как заменить OFFSET на WHERE? - Mailing list pgsql-ru-general

From Dmitry E. Oboukhov
Subject Составной индекс: как заменить OFFSET на WHERE?
Date
Msg-id 20160524132429.GB15020@vdsl.uvw.ru
Whole thread Raw
List 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@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment

pgsql-ru-general by date:

Previous
From: Teodor Sigaev
Date:
Subject: Re: [pgsql-ru-general] GIN индекс - веса
Next
From: Vladimir Borodin
Date:
Subject: Re: На правах рекламы