помогите с pl\sql`ем #2
Нормальный запрос. Упрощать тут нечего ИМХО.
Может с CASE- сами попробовать
я к сожалению Оракл не знаю
я к сожалению Оракл не знаю
а чегож он работает блин так долго, если нормальный?

наверное надо таблицу временную делать...

наверное надо таблицу временную делать...
попробуй select clientid as r, clientid from c order by clientid вставить в отдельную таблицу...
мб он этот селект на каждый апдейт делает?
мб он этот селект на каждый апдейт делает?
ЗЫ а тебе это один раз надо сделать или много и часто?
один раз
у нас был похожий случай - там был запрос типа
select a from b where id in (select * from some_function(some_params; [postgres]
на таблице a с 15000 элементов работал пипец как медленно, хотя функция возвращала от силы пару сотен id.
Но после переделки на
insert into temp_table select * from some_function(...);
select a from b where a.id = temp_table.id все сьало нормально
ЗЫ а а если с отдельной таблицей не получится, то можно создать таблицу, по структуре такую же как исходная и вставить туда все строки из исходной таблицы с замененными значениями clientattr3 (это проще, так как это делается селектом, а не апдейтом). а потом заменить строки в исходной таблице на строки из временной
select a from b where id in (select * from some_function(some_params; [postgres]
на таблице a с 15000 элементов работал пипец как медленно, хотя функция возвращала от силы пару сотен id.
Но после переделки на
insert into temp_table select * from some_function(...);
select a from b where a.id = temp_table.id все сьало нормально
ЗЫ а а если с отдельной таблицей не получится, то можно создать таблицу, по структуре такую же как исходная и вставить туда все строки из исходной таблицы с замененными значениями clientattr3 (это проще, так как это делается селектом, а не апдейтом). а потом заменить строки в исходной таблице на строки из временной
спасибо 
я в общем-то примерно это и имел в виду в предыдущем посте
правда реализация пока отложилсь...

я в общем-то примерно это и имел в виду в предыдущем посте
правда реализация пока отложилсь...
Оставить комментарий
voronetskaya
задача - записать в поле порядковый номер записи(если выбирать записи по возрасстанию поля clientid) только в том случае, если это поле not null.родил я вот такой апдейт -
UPDATE Clients c SET c.CLIENTATTR3 = (select r from (select rownum as r, clientid from clients order by clientid ) a where a.clientid=c.clientid) where c.CLIENTATTR3 is not null;
и чем-то он мне не нравится...
кто подскажет как оптимизировать?