Необходимо удалить повторяющиеся записи из таблицы. Таблица содержит только 33 столбца только PK_NUM
- это первичные ключевые столбцы. Поскольку PK_NUM
содержит уникальные записи, нам нужно рассмотреть либо значение min/max.Удалить дубликаты записей в таблице oracle: размер 389 ГБ
- Всего записей в таблице: 1766799022
- Отдельные записи в таблице: 69237983
- повторяющихся записей в таблице: 1697561039
детали Колонка:
- 4: Дата данных типа
- 4: Номер типа данных
- 1: Данные Char Тип
- 24: тип данных VARCHAR2
Размер стола: 386 GB
DB детали: Oracle Database 11g EE :: 11.2.0.2.0 :: 64bit Производство
образец данных:
- col1, col2, col3
- 1, АВС, 123
- 2, PQR, 456
- 3, ABC, 123
Ожидаемые данные должны содержит только две записи:
- col1, col2, col3
- 1 АВС, 123
- 2, PQR, 456
* 1 можно заменить d на 3, наоборот.
Мой план здесь является
- Вытяните различные записи и хранить его в спину таблице. (Т.е. с помощью вставки в выберите)
- усечь существующую таблицу и переместить записи из обратно к существующим.
Как размер данных огромен,
- Хочет знать, что является оптимизированной SQL для извлечения различных записей
- Любой оценки того, сколько потребуется для завершения (вставить в выберите) и обрезать существующую таблицу.
Пожалуйста, дайте мне знать, если есть какой-либо другой лучший способ достичь этого. Моя конечная цель - удалить дубликаты.
Из моего опыта вставка будет намного быстрее, чем удаление. Таким образом, ваш подход звучит хорошо. Вы можете сделать это еще быстрее, когда вы отбрасываете исходную таблицу и резервную копию на старое имя и воссоздаете все ограничения. Затем вы сохраняете работу по повторной вставке строк. –
Сколько столбцов вам нужно сравнивать для отличимости? –
Для сравнения отличия необходимо использовать 15 столбцов –