Складываем в кучки ящики с одинаковыми почтовыми доменами и сортируем по размеру кучек:
MariaDB [asdf]> SELECT substring_index(mail, '@', -1), COUNT(*) AS MyCount from users GROUP BY substring_index(mail, '@', -1) ORDER BY MyCount DESC;
Ну и выпиливаем по имени домена:
MariaDB [asdf]> DELETE FROM users WHERE mail LIKE '%maildin.com';
В принципе можно даже так:
MariaDB [asdf]> DELETE FROM users WHERE mail LIKE '%.gq';
И даже как-нибудь так:
MariaDB [asdf]> DELETE FROM users WHERE mail LIKE '%s.com';
Спамеров на mail.ru и подобных можно выпилить методом исключения. Сначала надо взглянуть на логины:
MariaDB [asdf]> SELECT name FROM users WHERE mail LIKE '%mail.ru';
Записал тех, кто явно не спамер, далее удаляем всех, кроме них(имён было немного больше, сократил):
MariaDB [asdf]> DELETE FROM users WHERE mail LIKE '%mail.ru' AND name != 'ольга' AND name != 'Екатерина92' AND name != 'аня' AND name != 'admin' ;
Вероятно, это всё можно сделать более оптимально. Даже скорее всего, но как всегда времени разбираться не было. Зная реальных пользователей, можно было сразу указать выпилить всех, кроме них. Но всех 22.5К просматривать не вариант, да и реальные люди успели порегаться в процессе, так что по датам кромсать тоже не катит.