powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, оптимизировать UPDATE
10 сообщений из 10, страница 1 из 1
Помогите, пожалуйста, оптимизировать UPDATE
    #39837756
alsuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
При запуске следующего UPDATE-а блокируются таблицы (((
Помогите, пожалуйста, его оптимизировать..
UPDATE mcs.CHANNEL_AUD ch1 SET SERVICE_STATUS=(
SELECT SERVICE_STATUS FROM ( SELECT SERVICE_STATUS ,SRC_CMS_ID from
(SELECT ch.*, rank() over(partition by NAME order by REV ) AS rnk
from mcs.CHANNEL_AUD CH WHERE ch.SERVICE_STATUS IS NOT NULL ) WHERE RNK=1 ) ch2 WHERE ch1.SRC_CMS_ID=ch2.SRC_CMS_ID ) WHERE SERVICE_STATUS IS NULL
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39837772
watson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39837807
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alsuzДобрый день!
При запуске следующего UPDATE-а блокируются таблицы (((
Помогите, пожалуйста, его оптимизировать..
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
UPDATE mcs.CHANNEL_AUD ch1 
SET SERVICE_STATUS=(
SELECT SERVICE_STATUS 
FROM ( SELECT  SERVICE_STATUS ,SRC_CMS_ID 
from (SELECT ch.*, rank() over(partition by NAME order by REV ) AS rnk
        from mcs.CHANNEL_AUD CH WHERE  ch.SERVICE_STATUS IS NOT NULL )  
WHERE  RNK=1 ) ch2 WHERE ch1.SRC_CMS_ID=ch2.SRC_CMS_ID ) 
WHERE  SERVICE_STATUS IS NULL

Для оформления кода на данном форуме используйте, пожалуйста, тэг SRC.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39838349
Попробуйте так.
Код: plsql
1.
2.
3.
4.
update (select SERVICE_STATUS,
               FIRST_VALUE(ch.SERVICE_STATUS) IGNORE NULLS over(partition by order by ch.REV ASC) SERVICE_STATUS_NN
          from mcs.CHANNEL_AUD ch)
   set SERVICE_STATUS = NVL(SERVICE_STATUS, SERVICE_STATUS_NN)
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39838359
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Кудрявцев,

И тут-же схватишь ORA-01732.

SY.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39838451
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Условие WHERE RNK=1 намекает на необходимость использования FIRST/LAST


update mcs.CHANNEL_AUD ch1
SET SERVICE_STATUS=(select max(SERVICE_STATUS) keep (dense_rank first order by rev)
from mcs.CHANNEL_AUD CH2
WHERE ch2.SRC_CMS_ID=ch1.SRC_CMS_ID and ch2.SERVICE_STATUS IS NOT NULL)
WHERE SERVICE_STATUS IS NULL
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39840808
alsuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MazoHist,
спасибо большое!
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39840836
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предоставьте описание поля REV.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39840849
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
UPDATE mcs.CHANNEL_AUD ch1 
SET SERVICE_STATUS=(SELECT SERVICE_STATUS
                      from mcs.CHANNEL_AUD CH 
                     WHERE ch.SERVICE_STATUS IS NOT NULL 
                       and ch1.SRC_CMS_ID=ch.SRC_CMS_ID
                       and not exists (select 1 from mcs.CHANNEL_AUD CH_ex 
                                        where CH.name = CH_ex.name 
                                          and CH_ex.SERVICE_STATUS IS NOT NULL
                                          and (CH_ex.rev < CH.rev 
                                               or CH_ex.rev = CH.rev and CH_ex.rowid < CH.rowid)
                                       )
                     )
WHERE SERVICE_STATUS IS NULL
...
Рейтинг: 0 / 0
Помогите, пожалуйста, оптимизировать UPDATE
    #39841233
alsuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dshedoo,
поле REV - дата в формате NUMBER
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, оптимизировать UPDATE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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