MYSQL Убираем дубли из таблицы если есть поле ID
1 2 |
CREATE TEMPORARY TABLE `t_temp` as ( SELECT min(id) as id FROM `table` GROUP BY name, surname ); DELETE from `table` WHERE `table`.id not in ( SELECT id FROM t_temp ); |
MYSQL Убираем дубли из таблицы если нет поля ID
на примере таблицы b_user_access_check
В текущей версии 1С Битрикс айдишника нет и пишут они туда без какого либо контроля на дубли, в результате чего у одного из клиентов 80 млн. записей и 8 гигабайт «вес» файла таблицы, всё это «добро» от включенной галочки «Сохранять историю изменения полей профиля пользователя:» и нулём в «Сколько дней хранить историю».
Собственно, штатных методов почистить не нашел и саппорт тоже ничего не подсказал, поэтому убираем дубли напрямую запросом:
1 2 3 |
CREATE TEMPORARY TABLE `t_temp` as ( SELECT DISTINCT `USER_ID`, `PROVIDER_ID` FROM `b_user_access_check` GROUP BY `USER_ID`, `PROVIDER_ID` ); TRUNCATE TABLE `b_user_access_check`; INSERT INTO `b_user_access_check` (`USER_ID`, `PROVIDER_ID`) SELECT `USER_ID`, `PROVIDER_ID` FROM `t_temp`; |