powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Сложности с update в DB2
8 сообщений из 8, страница 1 из 1
Сложности с update в DB2
    #37402798
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро.
Есть Table1(id,name1,name2,...name10) (10 млн записей), и Table2(id,name1,name2,...name10) (10 тыс записей, Created Global Temporary). Требуется обновить поля name1,name2,...name10 в Table1 значениями из Table2 (связь по id). Данная операция будет выполняться часто, поэтому быстродействие важно. В MS SQL это делается с помощью одного запроса с update, в oracle - с помощью merge или неявного курсора. В DB2, как я понимаю, потребуется открывать курсор, фетчить записи по одной в переменные и делать после каждого фетча update? Или можно сделать это как-то проще, хотя бы без переменных (чтобы при изменении размерности поля name1 не пришлось менять процедуру)?
DB2 10 for Z/OS.
...
Рейтинг: 0 / 0
Сложности с update в DB2
    #37402894
...
Рейтинг: 0 / 0
Сложности с update в DB2
    #37402921
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я это читал, но ведь там вроде значения для update'а берутся из переменных, а не из таблицы?
...
Рейтинг: 0 / 0
Сложности с update в DB2
    #37403154
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал в стиле oracle'а:

Код: plaintext
1.
2.
for crs as (select a.* from Table2 a) do
   update Table1 set name1=crs.name1,name2=crs.name2,...name10=crs.name10 where id=crs.id;
end for;
...
Рейтинг: 0 / 0
Сложности с update в DB2
    #37403653
mustaccio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, так не работает:
Код: plaintext
1.
update Table1 t1 set (name1, name2, ...) = (select name1,name2, ... from Table2 t2 where t2.id=t1.id)
?

Можно добавить
Код: plaintext
1.
where exists (select  1  from Table2 where id = t1.id)

чтобы ограничить набор обновляемых записей.
...
Рейтинг: 0 / 0
Сложности с update в DB2
    #37406188
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mustaccio,

спасибо, не знал, что так можно, но мой вариант быстрее в 50 раз, т.к. по временной таблице DB2 не позволяет построить индекс.
...
Рейтинг: 0 / 0
Сложности с update в DB2
    #37408569
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ankalexmustaccio,

спасибо, не знал, что так можно, но мой вариант быстрее в 50 раз, т.к. по временной таблице DB2 не позволяет построить индекс.

И, какую ошибку выдает DB2 при попытке создания индекса для временной таблицы?
...
Рейтинг: 0 / 0
Сложности с update в DB2
    #37417274
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman,
THE REQUESTED OPERATION OR USAGE DOES NOT APPLY TO CREATED TEMPORARY TABLE...
Ранее читал об этом ограничении в доке.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Сложности с update в DB2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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