Как удалить данные 200k с определенным идентификатором пользователя? - PullRequest
1 голос
/ 30 октября 2019

В настоящее время я новичок в Mysql, и мне было поручено фактически удалить более 200 000 данных через phpmyadmin.

Я на самом деле просмотрел все данные и извлек из них идентификаторы пользователей, просто чтобы знать, что он не работает так, как мне кажется. Используя этот код:

DELETE FROM User_data 

WHERE user_id IN ( 18852,22233,31257888,234414,555551....88884442);

Я ожидал, что он удалит все данные 200k за один раз, но вместо этого он удалил только данные 5k.

Спасибо за чтение! Надеюсь на некоторые ответы

Отредактировано: User_ids не упорядочены должным образом

Ответы [ 3 ]

0 голосов
/ 30 октября 2019

Вы можете попробовать это

DELETE FROM User_data WHERE user_ID LIMIT 200000; 
0 голосов
/ 30 октября 2019

Вы можете попробовать заполнить временную таблицу, содержащую значения user_id, которые нужно удалить, а затем выполнить объединение удаления:

CREATE TEMPORARY TABLE user_ids (user_id INT PRIMARY KEY);
INSERT INTO user_ids (user_id)
VALUES
    (18852), (22233), (31257888), (234414), (555551), ..., (88884442);
-- or maybe load from CSV using LOAD DATA

DELETE u1
FROM User_data u1
INNER JOIN user_ids u2
    ON u1.user_id = u2.user_id;

Теперь, поскольку столбец user_id во временной таблице являетсяПервичный ключ, поиск соединения должен быть очень быстрым (вероятно, немного быстрее, чем ваш текущий WHERE IN). Кроме того, это решает проблему попытки передать слишком много IN параметров в запросе. С этим решением вам совсем не обязательно это делать.

0 голосов
/ 30 октября 2019

Это предложение IN, которое имеет ограничение, отметьте max_allowed_packet

, который вы можете сделать вместо этого запроса.

delete from User_data where user_ID <= 200000

или

delete from User_data where user_ID order by id desc limit 200000

или (хотя бы у этого есть диапазон)

delete from User_data where user_id between 18852 and 18853
or user_id between 22233 and 22238
or user_id between 555551 and 555553
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...