Категорії
DataBases Misc, staff, other

[mysql] вывод всех дубликатов

Нужно было в таблице найти дубликаты по столбцу и вывести их по всем столбцам. В итоге смастерил вот такой запрос:

mysql> select * from alias where address IN (select address from alias GROUP BY address HAVING COUNT(address)>1) order by address;

Ищет дубликаты в столбце address, выводит полную строку из таблицы alias и сортирует вывод. В итоге получилось такое:

mysql> select * from alias where address IN (select address from alias GROUP BY address HAVING COUNT(address)>1) order by address;
+--------------------------+-----------------------------------------+---------------+---------------------+---------------------+--------+
| address                  | goto                                    | domain        | created             | modified            | active |
+--------------------------+-----------------------------------------+---------------+---------------------+---------------------+--------+
| directoria@domain.ua     | directoria@domain.ua                    | domain.ua     | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |      1 |
| directoria@domain.ua     | kmd@domain.ua                           | domain.ua     | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |      1 |
| help@domain.ua           | help_desk@domain.ua                     | domain.ua     | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |      1 |
| help@domain.ua           | tech@domain.ua                          | domain.ua     | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |      1 |

А теперь неприятное: этот запрос очень тяжёлый, выполнялся 0,8 секунд в таблице с 500 записями на серваке с 8 Гб и 2х4-ядерных проца. Поэтому, пользуйтесь этим запросом осторожно, ибо запрос в пару тысяч записей может завалить его.

2 коментарі “[mysql] вывод всех дубликатов”

Огромное спасибо, добавил в закладки…
Делал запрос в табличке с 2200 записей = Запрос занял 2.7834 сек
Хочу сделать запрос в табличке с 300000+ записей 🙂
посмотрим что будет… :)))
сервак IntelCore i7 8 ядер, 24ГБ оперативы

Не мое решение но такйо запрос быстрее обрабатывает (——-

select emailen, count(*) from tyh76_cck_store_item_content group by emailen having count(*)>1 order by count(*) desc
——-)

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff