У меня есть таблица РСУБД со столбцом BIGINT
Тип и значения не являются последовательными. У меня есть Java-программа, где я хочу каждый поток, чтобы получить данные, как на PARTITION_SIZE
т.е. я хочу пару значений столбцов, как после выполнения ORDER BY
на результате,Возможно ли получить секционированные данные с использованием SQL?
Column_Value at Row 0 , Column_Value at Row `PARTITION_SIZE`
Column_Value at Row `PARTITION_SIZE+1` , Column_Value at Row `2*PARTITION_SIZE`
Column_Value at Row `2*PARTITION_SIZE+1` , Column_Value at Row `3*PARTITION_SIZE`
В конце концов, я передам выше диапазонов значений в запросе выборки-х BETWEEN
, чтобы получить разделенные данные для каждого потока.
В настоящее время я в состоянии сделать это разделение с помощью Java, поставив все значения в List
(после получения всех значений из БД), а затем получить значение в этих конкретных показателях - {0,PARTITION_SIZE},{PARTITION_SIZE+1,2*PARTITION_SIZE}
..etc но проблема есть в том, что List
мощи имеют миллионы записей и не рекомендуется хранить в памяти.
Так что мне было интересно, можно ли написать такой запрос с использованием самого SQL, который вернет мне те диапазоны, как внизу?
строк 1 -> minId, maxId
строка-2 -> minId, maxId
....
базы данных это DB2.
Например,
Для столбца таблицы значений 1,2,12,3,4,5,20,30,7,9,11
, результат SQL запроса для размера в раздела = 2 должно быть {1,2},{3,4} ,{5,7},{9,11},{12,20},{30}
.
Могу ли я получить свой вопрос прямо - вы хотите получить данные из DB2 параллельно с использованием нескольких потоков. И вы спрашиваете, как вы можете выбрать строки для получения непересекающихся SELECT? – MichaelTiefenbacher
Спасибо, что посмотрели. Я добавил пример на вопрос и да, я думаю, вы поняли это правильно. –
Пример, который я добавил, имеет только одно значение для последнего набора, и я позабочусь об этой ситуации в программе, так как нет конечного значения. –