| 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
| 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 индекс - веса |