Перебор таблицы DB2 по блокам без идентификатора строки

Мы должны создать процесс в Spring Framework, который читает таблицу DB2 по блокам. Однако в этой таблице нет столбца с уникальным идентификатором, который мы можем использовать в качестве курсора, поэтому во втором блоке мы не знаем, с какой точки мы должны читать. В таблице есть такие столбцы:

BOOK_ID  SOLD_AT  QUANTITY

Первый — внешний ключ к модели книги, второй — дата продажи книги, а третий — количество проданных книг.

Можно ли выполнить SELECT упорядочение по rowId db2? К сожалению, это устаревший код, поэтому мы не можем создать дополнительный столбец в файле db2.

Заранее спасибо.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
125
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это:

select hex(rowid) rowid, t.name, t.creator
from (
select t.*, rid_bit(t) rowid 
from sysibm.systables t
) t 
order by rowid
fetch first 10 row only;

Значение rid_bit(table-designator) для строки может измениться при физическом перемещении строки (реорганизация, например, старая строка удаляется, новая строка вставляется в то же физическое место и т. д.)

Большое спасибо за ваш ответ, тогда я мог бы выбрать по rowId больше, чем известный rowid? Должен ли я использовать rowid или hex (rowid)? С точки зрения производительности, в таблице с большим количеством записей может возникнуть проблема с использованием такого запроса? Большое спасибо

FVod 24.05.2019 18:31

Функция возвращает значение varchar for bit data — двоичную строку. Если вы умеете корректно работать с такими данными - используйте их без hex. Вместо этого вы можете использовать функцию rid() (она возвращает bigint), если ваша база данных не разделена на разделы (DPF). Сортировка огромной таблицы может быть не очень хорошей идеей, но правильной альтернативы этому нет...

Mark Barinstein 24.05.2019 20:07

Другие вопросы по теме