powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / запрос на выборку данных
5 сообщений из 30, страница 2 из 2
запрос на выборку данных
    #35591621
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olegrolik1. Не пойму для чего нужна отдельная таблица? Можно немного поподробнее?
2. Я в программировании БД не силён, думаю надо почитать литературу.

А всё же если просто делать пэйджинг без редактирования записей (для начала так - просмотр данных и всё), мой вариант годится?
Т.е. на форме будет две кнопки - предыдущие 100 записей , следующие 100 записей . И при нажатии на каждую кнопку, будет вызываться select (см. выше какой) и данные будут отображаться на jsp-страничке.При каждом вызове вашего запроса будут происходить следующие вещи:
1. Сканирование миллиона записей
2. Выборка 100 записей
1-й шаг - весьма затратное действие, особенно, когда много пользователей.
Ваша задача - либо уменьшить число шагов 1, либо избавиться от них вообще.

Извавиться от шагов 1 можно либо введя доп. таблицу "перекодировки", либо ввести доп. поле в этой таблице.
Тогда запрос для доп. таблицы hockey_ext:
Код: plaintext
1.
2.
3.
4.
5.
id | ordered_id
1  | 1
3  | 2
10 | 3
...
будет выглядеть примерно так:
select h.*
from hockey h
join hockey_ext e on h.id=e.id
where e.id_ordered between v1 and v1+100;

Уменьшить число шагов 1 можно, открыв курсор с большим числом записей 1 раз, а потом на запросы получения след. порции просто прокручивать этот курсор, не заставляя сервер каждый раз при этом выполнять дорогостоящее сканирование.
...
Рейтинг: 0 / 0
запрос на выборку данных
    #35592028
olegrolik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. говоря проще, добавить в таблицу новое поле order_id, где значения будут инкрементами (от 1 до миллиона). И делать выборку по этому полю. Верно?
...
Рейтинг: 0 / 0
запрос на выборку данных
    #35592649
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В CookBook для 9.5 есть такой пример.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
WITH temp (inv#, c#, sd, sv, n) AS      
  (SELECT  inv.*                        
          , 1                             
   FROM    invoice inv                  
   WHERE   inv# =                       
          (SELECT MIN(inv#)             
           FROM   invoice)              
   UNION   ALL                          
   SELECT  new.*, n +  1                  
   FROM    temp    old                  
          ,invoice new                  
   WHERE   old.inv# < new.inv#          
     AND   old.n    <  5                  
     AND   new.inv# =                   
          (SELECT MIN(xxx.inv#)         
           FROM   invoice xxx           
           WHERE  xxx.inv# > old.inv#)  
  )                                     
SELECT   *                              
FROM     temp;                          

если вместо (SELECT MIN(inv#) FROM invoice) подставить нужное значение то можно будет гулять по все таблице.
...
Рейтинг: 0 / 0
запрос на выборку данных
    #35592659
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так же там есть примеры использования функции Lag и Lead которые показывают значение предыдущей и следующей записи.
Проверить у себя не могу но думаю что то типа

Код: plaintext
select * from table1 where id between  23434  and lead(id, 100 ) 
...
Рейтинг: 0 / 0
запрос на выборку данных
    #35592678
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olegrolikТ.е. говоря проще, добавить в таблицу новое поле order_id, где значения будут инкрементами (от 1 до миллиона). И делать выборку по этому полю. Верно?Это будет работать только если у вас:
- не будет удалений записей
- операции вставки никогда не будут отваливаться по ошибке
- инкрементное поле будет no cache или при рестарте базы вы будете руками рестартовать инкремент с существующего макс. значения+1

Иначе у вас будут появляться дыры в нумерации.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / запрос на выборку данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]