MySQL удаляет записи, используя LIMIT или используя WHERE - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь найти лучший способ удалить миллионы записей в БД MySQL.У меня есть таблица с PK по ID и индекс по столбцу «date», и мои запросы на удаление выглядят так:

DELETE FROM table WHERE date < '<today - 6 months>';

Это вызывает большую задержку на ведомом устройстве.

Iбыло 2 варианта:

DELETE FROM table WHERE date < '<today - 6 months>' LIMIT 1000;

или

Включить дальнейшее индексирование или использование PK для удаления.

Я хотел бы услышать ваше мнение.Если использование LIMIT не изменит рабочую нагрузку или если лучше использовать PK (в сочетании с LIMIT).

1 Ответ

0 голосов
/ 11 марта 2019

Лучший способ удалить много строк, особенно в настройках репликации, - это пройти по таблице через PRIMARY KEY порциями по 1000 строк.

Подробнее см. this .

Если это повторяющаяся задача, то «временной ряд» PARTITIONing еще лучше. (Хотя это не поможет, пока вы не настроите разделение.) См. this .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...