Когда фиксируете записи, когда мы вставляем записи из другой таблицы - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть sql-запрос, например:

insert into dedupunclear 
  select mdnnumber,poivalue 
  from deduporiginal a 
  where exists (
    select 1 
    from deduporiginal
    where mdnnumber=a.mdnnumber and rowid<a.rowid) 
  or mdnnumber is null;

В моем дедупоригинальном файле 500 тыс. Записей.Я поместил этот запрос в функцию, но это займет около 3 часов, чтобы зафиксировать записи в дедуктивной таблице.

Есть ли альтернатива для решения проблемы производительности?

Когда этот запрос фиксирует записи, через некоторый интервалили после получения всех результатов запроса select?

1 Ответ

1 голос
/ 16 декабря 2011

Вот как я это сделал на днях:

    delete from  table a 
     where rowid > 
            (select min(rowid) from table b 
              where   nvl(a.id, 'x') = nvl(b.id, 'x')  )

Вместо вставки в таблицу дедупликации я просто удалил строки прямо из промежуточной таблицы. Для таблицы с 1 миллионом строк этот запрос работал довольно хорошо. Я волновался, что функция nvl убьет индекс, но он работал достаточно хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...