Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обновление строк в таблице / 6 сообщений из 6, страница 1 из 1
14.10.2019, 11:59
    #39875885
mihaaa19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление строк в таблице
Здравствуйте!
Столкнулся с задачей обновить строки в таблице1 данными из таблицы2 (обновить только те, значения в которых null ) , а так же поставить флаг, если запись была найдена и добавлена.

update table1 k set k.atr1 = (select r.atr2 from
table2 r where
k.number=r.num and r.atr2 is not null
), k.source_r='1'
where k.atr1 is null;


Проверил логику работы, с ней все вроде бы в порядке.
Данный скрипт проверил на 10 строках таблицы1, работал около 2 минут. Для целой таблицы, в которой содержится около 80 тыс нулевых строк (подходящих нам), данный скрипт не работает.
Подскажите, пожалуйста, как можно модифицировать запрос, чтобы заработало.
...
Рейтинг: 0 / 0
14.10.2019, 12:05
    #39875887
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление строк в таблице
mihaaa19данный скрипт не работает.По каким симптомам был поставлен диагноз?
...
Рейтинг: 0 / 0
14.10.2019, 12:09
    #39875892
mihaaa19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление строк в таблице
AmKad,

запускал на ночь, утром останавливал, проверял сколько флагов выставлено (ни одного).
Сам факт, что скрипт работал всю ночь, мне кажется, не очень эффективно
...
Рейтинг: 0 / 0
14.10.2019, 12:19
    #39875899
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление строк в таблице
mihaaa19,

Простая арифметика: 10 строк - 2 минуты, 80К строк - ?

Получаем ожидаемое время 16000 минут, ты просто немножко не дождался!

0. Перепиши на merge, чтобы уйти от многопроходности по table2, которая либо много больше 80К строк, либо каждый раз читается полностью
1. Коммит не забудь
2. Можно разбить на куски
3. Конкурентной вставки и обновлений нет?
...
Рейтинг: 0 / 0
14.10.2019, 12:32
    #39875910
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление строк в таблице
mihaaa19Проверил логику работы, с ней все вроде бы в порядке.

Нет. Если у update в части set видишь подзапрос - у его автора не в порядке ни с головой
вообще, ни с логикой в частности. MERGE тебе нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.10.2019, 09:08
    #39876336
mihaaa19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление строк в таблице
Dimitry Sibiryakov,
env,
Спасибо, разобрался!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обновление строк в таблице / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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