Вам индекс по ID вообще нах не нужен. Это пассивные данные для вытягивания.
Индекс нужен только для поиска (и соединения таблиц).
Более того, он вам просто место занимает, тормозя работу.
А вам полагается упорядочить ваши id по какому-то признаку. На данный момент у вас признак упорядочивания отсутствует как таковой. Вам вообще чудом повезло, что строчки вываливаются в том порядке, в котором они вставлены. В общем случае никакая БД, никакой SQL стандарт не обязаны возвращать строки в таком порядке.
Я вам предлагаю ввести такой признак искусственно посредством «PK SERIAL». Это неразрывная последовательность, которую можно сравнивать с генератором счётчика. К тому же индексированная, что позволяет быстро вытаскивать данные из таблицы.
А если индекс будет кластеризованным, да ещё и (как он называется? забыл) с полным покрытием, тогда вообще быстрота будет максимальной с учётом БД.
Короче
create table ids (pk serial primary key, id integer not null);
insert into ids (id) values (ваше значение, незнаю как вы там заполняете таблицу);
create index idx_ids_pk_id on id(pk, id);
create sequence seq_ids 1;
В процессе работы:
select id from ids where pk >= nextval('seq_ids') limit {отсыпьте в граммах сколько вам надо};
В результате значения ID будут упорядочены жёстко согласно порядку их вставки в таблицу и гарантированно не будут путаться. Время поиска будет минимизировано, так как порядок значений индексирован. А если постгрес пользуется индексами с полным покрытием, то вытаскивать ваши данные он будет не глядя в таблицу вообще — так как данные уже есть в составном индексе.
Но это я всё теоретически. Сам я с постгресом не работал никогда.
Кистати, это ваше вот «С определенного K вся эта балалайка» — вам религия не позволяет primary key с последовательными значениями создать?
И что это вообще за таблица? Может она генерируется в процессе и проще генерировать налету по запросу?
Я думаю представление со счётчиком выглядит нормально.
Но у вас опять-таки не понятно, идут ли хосты прямо в базу или архитектура трёхслойная (приклад-аппсервер-бдсервер). Если хосты идут прямо в базу, то использование, как я думаю, счётчика — прямое решение, бо счётчик придуман именно для генерации различных значений для различных клиентских процессов.
Если архитектура трёхслойная, то… можно и счётчиком, вообще говоря. Но тогда опять не ясна задача.
Если раздаются диапазоны (например, филиал просит пачку номеров бланков на будущую неделю), то это одно. Если вы формируете DDoS и каждый LOIC должен брать у центра значения по сто раз в секунду в реальном времени, то это совсем другое.
Я не понял вашего задания. Если вы раздаёте диапазоны «по одному в руки», то limit 1 вполне логичная вещь. Или ваши хосты могут забирать по нескольку строк в одно касание?
Ну… Давным давно то ли в Interbase, то ли в Oracle я исследовал возможность контролировать выборку.
В оракуле афаир это был trigger instead of view, но могу соврать. В борланде это была селект-процедура, которая построчно могла формировать, вычислять или подменять строки.
Я навскидку только это покажу РД 50-34.698-90 (наверняка есть аналогичный документ с старых гостах 70 и 80 годов)
Пояснительные записки 2.2.3. В разделе «Описание процесса деятельности»
2.2.4. В разделе «Основные технические решения» 4) решения по численности, квалификации и функциям персонала АС, режимам его работы, порядку взаимодействия
2.5. Описание автоматизируемых функций: 2.5.4. Раздел «Характеристика функциональной структуры: 3) необходимые пояснения к разделению автоматизированных функций на действия»
2.6.2. В разделе «Характеристики комплекса задач»: 7) распределение действий между персоналом и техническими средствами при различных ситуациях решения комплекса задач
… и так далее и тому подобное
Если вы имеете в виду взаимодействия заказчика и подрядчика, то типов систем слишком много, и порядок будет специфическим для конкретного продукта. Обратите особенное внимание на порядок приёмо-сдаточных работ.
У меня не получилось. Поэтому после утери смартфона начал параноить по планшету с тренировкой всех сценариев. Avast почти идеален кроме того, что управляется через СМС (не управляется при смене симки). Но Начинает вопить на контрольный номер о том, что симка сменена, причём с координатами. То есть, теоретически, может принимать команды и на новую симку. Надеюсь. В идеале он должен управляться по IMEI через, например, веб-сайт аваста, вне зависимости от симки. Обещают, ждём.
Напоминает кописрач по поводу музыки в гостинице. Когда запрещено публичное воспроизведение. Номер вроде бы публичное место. Но когда заселён — сразу перестаёт быть публичным местом в общем смысле. ;-)
«where post_user_ref = user_id»