powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Удалить дупликаты из большой базы (как?)
9 сообщений из 9, страница 1 из 1
Удалить дупликаты из большой базы (как?)
    #35991831
есть таблица

Код: plaintext
create table T (i_val int, c_val varchar( 123 ), d_val datetime, b_val varbinary( 255 ))
размером 10 Gb
размер БД 16 Gb, лога 2 Gb
Размер tempdb 8 Gb, лога 4 Gb

Как удалить дупликаты из этой таблицы?
Заранее благодарен за помощь.
...
Рейтинг: 0 / 0
Удалить дупликаты из большой базы (как?)
    #35991886
MAXHATbIu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может что-либо вроде вот этого подойдёт? (подсмотрел на одном из форумов)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
DELETE t1
FROM T t1, T t2 
WHERE t1.поле_1=t2.поле_1
and  t1.поле_2=t2.поле_2
and  t1.поле_3=t2.поле_3
....
AND t1.ID > t2.ID
где ID - первичный ключ
...
Рейтинг: 0 / 0
Удалить дупликаты из большой базы (как?)
    #35991953
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван Пирогов wrote:

> Как удалить дупликаты из этой таблицы?

Тебе по любому нужно сначала определиться, что такое "дубликаты"
у тебя.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Удалить дупликаты из большой базы (как?)
    #35992108
MAXHATbIu,
а первичного ключа там нет, в этом то и суть. Нужно чтобы запрос отработал так, чтобы по памяти не было переполнений. Боюсь при таком соединении оно вполне может и произойти
...
Рейтинг: 0 / 0
Удалить дупликаты из большой базы (как?)
    #35992114
MasterZiv,

скорее всего по первым трем полям. Не уверен, что блобы можно сравнивать
...
Рейтинг: 0 / 0
Удалить дупликаты из большой базы (как?)
    #35992135
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван Пирогов wrote:

> скорее всего по первым трем полям. Не уверен, что блобы можно сравнивать

Лучше всего создать другую таблицу с такой же структурой, но
плюс ещё с уникальным индексом по всем полям, набор значений которых
будет тебе давать уникальность записи (что это - не дубликат).
В индексе надо сделать опцию IGNORE_DUP_KEY. С этой опцией
нарушение уникального ключа не является ошибкой, а просто игнорируется.
И потом вставить в новую таблицу все строки из старой. Тогда
в новой останутся только уникальные значения.
Старую таблицу потом можно дропануть, а новую переименовать в старую,
или ещё как.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Удалить дупликаты из большой базы (как?)
    #35994454
MasterZiv,
спасибо, попробую
...
Рейтинг: 0 / 0
Удалить дупликаты из большой базы (как?)
    #35994627
MAXHATbIu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, тогда попутный вопрос, как к более опытному.
Почему бы просто не добавить alter table'ом ещё одно поле в таблицу, а затем в цикле проставить значения (от 1 до количества записей в таблице). Фактически получим уникальность записи. А потом после удаления дублей это поле дропнуть.
т.е примерно так
Код: plaintext
1.
2.
3.
alter table T add ID numeric ( 18 , 0 )

select @i= 1                                            
update T set ID=@i, @i=@i+ 1  
...
Рейтинг: 0 / 0
Удалить дупликаты из большой базы (как?)
    #35994734
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAXHATbIu wrote:

> таблице). Фактически получим уникальность записи. А потом после удаления
> дублей это поле дропнуть.
> т.е примерно так
>
> alter table T add ID numeric (*18*,*0*)
>
> select @i=*1*
> update T set ID=@i, @i=@i+*1*

Тоже вариант, есть ещё много вариантов. Тот, который я привёл - один
из достаточно стандартных и слабозаморочных.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Удалить дупликаты из большой базы (как?)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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