From: | "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Re: [pgsql-ru-general] Итерирование по таблице в режиме "Больше чем" |
Date: | 2016-12-14 11:55:13 |
Message-ID: | 20161214115513.GE14462@vdsl.uvw.ru |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
> есть таблица
> "id" SERIAL
> "did" INTEGER REFERENCES (NOT UNIQUE)
> Таблица очень большая.
> Нужен скрипт который обойдет данную таблицу по уникальным did, причем
> желательно в порядке по возрастанию ID.
> При этом желательно использовать индекс
> Такое не подойдет?
> https://wiki.postgresql.org/wiki/Loose_indexscan
Насколько я понимаю будет ровно та же проблема из за
SELECT MIN(col).
То есть для unique индекса такой перебор вполне хорошо идет
а вот для non-unique индекса перебор с выборкой unique заставляет
брать min/max (от направления).
а поскольку оно min/max планирует посортировать ПОСЛЕ выборки блока,
то теоретически может сортируя оперировать большими объемами, а этого
хочется избежать.
Ведь выборка из BTREE с пропуском ненужных элементов сразу дает
нужный, сортированный результат.
--
. ''`. 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 | Dmitry E. Oboukhov | 2017-03-06 11:50:51 | сменить пароли/доступы к БД без даунтайма |
Previous Message | Oleksandr Shulgin | 2016-12-14 10:50:58 | Re: [pgsql-ru-general] Итерирование по таблице в режиме "Больше чем" |