2010-06-01 3 views
1

Я пытаюсь изолировать дубликаты в базе данных 500 МБ и попробовал два способа сделать это. Один создания новой таблицы и группировки:MySQL Query все еще выполняется через день ..?

CREATE TABLE test_table as 
SELECT * FROM items WHERE 1 GROUP BY title; 

Но это работает уже в течение часа, и в MySQL Admin: он говорит, что статус Locked.

Другой способ, которым я попытался было удалить дубликаты с этим:

DELETE bad_rows.* 
     from items as bad_rows 
     inner join (
       select post_title, MIN(id) as min_id 
       from items 
       group by title 
       having count(*) > 1 
     ) as good_rows on good_rows.post_title = bad_rows.post_title; 

..и это работает уже в течение 24 часов в настоящее время, Admin говорит мне, что это передача данных ...

Как вы думаете, либо эти запросы на самом деле все еще работают? Как я могу узнать, висит ли он? (С Apple OS X 10.5.7)

ответ

1

Вы можете сделать это:

alter ignore table items add unique index(title); 

Это добавит уникальный индекс, и в то же время удалить все дубликаты, которые помешают любые будущие дубликаты от происходящих. Перед выполнением этой команды убедитесь, что вы сделали резервную копию.

+0

Отличное решение! Необходимо изменить любые поля TEXT или BLOB в VARCHAR до индексации. Благодаря! –

Смежные вопросы