powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как сделать чтобы быстрее работало
5 сообщений из 5, страница 1 из 1
Как сделать чтобы быстрее работало
    #33386317
dealko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача состоит в обработке записей по определённым признакам.
В таблице около 20 млн записе. Кол-во записей требующих обработки доходит иногда до 3 млн.

Приложение со сферы выбирает пачками по 1000 записей, потом обрабатывает эти пачки. Все три миллиона сразу взять не получается - говорят памяти не хватит на сфере.

Обработка идёт влёт. Очень медленно происходит процесс выбора записей по признакам таким оператором:
Код: plaintext
select ID from table where status is null or status= ? fetch first  1000  rows only

Индекс на status есть.

Что можно сделать, чтобы ускорить обработку ?
...
Рейтинг: 0 / 0
Как сделать чтобы быстрее работало
    #33386377
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Избавиться в запросе от OR.
Например сделать двумя операторами. Один отберет NULL, другой отберет status=?.
Посмотри план запроса. Наверняка он у тебя сейчас идет в любом случае TABLE SCAN. Поэтому лучше слегка перепроектировать табличку. Типа дефолтные значения навесить либо триггеры before. Т.е. Сделать так, чтобы не нужно было с NULL сравнивать и ставить OR.
...
Рейтинг: 0 / 0
Как сделать чтобы быстрее работало
    #33386480
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще одна фича.
на инстансе сделать
db2set DB2_SELECTIVITY=All
(ну и перезапустить инстанс)

и написать запросы так:
Код: plaintext
1.
select ID from table where status=? selectivity  0 . 000001 
...
Рейтинг: 0 / 0
Как сделать чтобы быстрее работало
    #33386508
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select ID from table where status=? selectivity 0.000001 fetch first 1000 rows only
...
Рейтинг: 0 / 0
Как сделать чтобы быстрее работало
    #33386533
dealko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Действительно работает гораздо быстрее.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как сделать чтобы быстрее работало
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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