Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Апдейт поля  [new]
Avotge
Guest
Табличка 35млн записей из них в 34млн записей поле типа дата пустое, а по-нему бы построить индекс.
Как быстрее обновить?
Сейчас стоит апдейт пачками по 100тыр. первые 100 прошли за 3 минуты.
Но чем дальше, тем искать по фулскану эти 100тыр он будет дольше ж.
Можно добавить поле-флаг, построить по нему индекс и апдейтить его вместе с датой,
чтобы потом следующие 100т. подбирать по этому индексу. Но это тоже не быстро да и дропать потом это поле тоже еще та затея имхо.
Можно вообще не обновлять, а построить индекс по nvl-у этого поля, но сомнительно, что это нормально в дальней перспективе :/
дропнуть поле и добавить заново с дефолтным значением, тоже не быстро будет имхо.
ctas? :(
1 июн 16, 11:29    [19244681]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
pihel
Member

Откуда: СПБ
Сообщений: 160
Avotge,

если правильно понял, можно создать индекс на null поле так:
create index
    emp_ename_idx
on
   emp 
   (ename asc, 1)
;
1 июн 16, 11:33    [19244713]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Добрый Э - Эх
Guest
Avotge,

а зачем заполнять пустые значения в поле, если его требуется проиндексировать?
и в целом, вообще непонятна цель сего мероприятия. если успели напихать в таблицу 35 млн записей и индекс не был нужен, то зачем он понадобился сейчас?
1 июн 16, 11:34    [19244717]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Avotge,

пишите в понедельник. такой бред только с бодуна можно читать без вреда для здоровья

не обижайтесь, попробуйте заново изложить что делаете и чего хотите
1 июн 16, 11:36    [19244739]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Avotge
Guest
Добрый Э - Эх, дабы мерджить новые данные в эту таблицу и искать в том числе надо по этому полю и хотелось бы, чтобы он было уже в индексе. Сразу не заполняли, т.к. картина рисуется по ходу пьесы и в самом начале до конца не ясно, что потребуется потом. По результатам.
1 июн 16, 11:38    [19244751]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Egoр
Member

Откуда:
Сообщений: 833
Avotge,

Может и не нужен индекс-то. Да нулы может не трогать если уж их почти 100%.
чем это все в мердже может пригодиться, если кардинальность поменяется не сильно?
1 июн 16, 11:45    [19244806]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Avotge
Guest
orawish, если с т.з. вопроса
Добрый Э - Эх
а зачем заполнять пустые значения в поле, если его требуется проиндексировать?

Да бред ) но имхо только потому, что действительно не озвучил, зачем индексировать.
Так же возможно, бред, если есть другие варианты без заполнения и без индекса по функции )
pihel, не очень понял суть, как оракл будет искать по такому индексу или какой должен быть запрос?
1 июн 16, 11:48    [19244822]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
K790
Member

Откуда:
Сообщений: 634
кажется мне, что это для CDC, только поздно пить боржоми, хотя может и не все потеряно
1 июн 16, 11:54    [19244842]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Avotge
Guest
Egoр
Может и не нужен индекс-то. Да нулы может не трогать если уж их почти 100%.
чем это все в мердже может пригодиться, если кардинальность поменяется не сильно?

Может и не надо, но:
1. пришли новые данные и в них 80% информации вообще не нужны в базе (т.е. ни апдейт и ни инсерт, т.е. это никак не измененные данные, но они приходят, выяснилось по ходу работы и никто этот формат менять не будет, не от нас зависит)
2. мы ищем только новые данные по id и дате изменения, но сейчас индекс только по id, поэтому из миллиона записей например обновится только 100тыс, но по 900тыс, мы так же будем лазить в таблицу, это очень долго, очень охота дату засунуть тоже в индекс и искать для апдейта сразу только нужные записи.
Вот так, надеюсь, более полно )
1 июн 16, 11:55    [19244846]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Avotge
Guest
Другое дело, что сейчас зато апдейт идет без изменения индексных полей, если же засунуть туда дату, то пойдет и перестройка индекса при ее обновлении. Но надеюсь, что отсечь по индексу 80% не нужной инфы все равно должно быть выгоднее.
1 июн 16, 12:00    [19244878]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
K790
Member

Откуда:
Сообщений: 634
Avotge,

а распределение данных на дату примерно какое?
1 июн 16, 12:02    [19244894]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Avotge
Guest
K790
а распределение данных на дату примерно какое?

Дата ж в привязке к id пойдет, который уникальный, поэтому распределение по самому индексу соответствующее. Или я не понял в чем суть вопроса, что от этого зависит.
1 июн 16, 12:07    [19244924]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Avotge
Guest
Вобщем сделал ставку на ctas ) С апдейтом долго выходит.
1 июн 16, 12:15    [19244978]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Egoр
Member

Откуда:
Сообщений: 833
Avotge,

тогда просто добавьте дату к индексу, и будет счастье.
данными ее не обязательно заполнять. nvl уже в мердж поставите.
1 июн 16, 12:21    [19245033]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Avotge
Guest
orawish
пишите в понедельник. такой бред только с бодуна можно читать без вреда для здоровья

Перечитал еще рез старт топика... Согласен, погорячился )
1 июн 16, 12:25    [19245058]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля  [new]
Avotge
Guest
Egoр
nvl уже в мердж поставите

Хотелось и от nvl уйти, но и правда сделаю так. Спасибо.
1 июн 16, 12:31    [19245103]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить