Должен ли я сбросить индекс таблицы / оптимизировать после удаления многих строк? - PullRequest
4 голосов
/ 04 февраля 2011

У меня есть таблица с 1 000 000 записей, и я выполняю инструкцию, которая удаляет ~ 700 000 строк.Индекс автоинкремента, конечно, по-прежнему равен 1 000 001.Самый высокий первичный ключ после этого, например, 40 000.

После такого огромного удаления строк я должен вручную установить индекс обратно на 40 001 или каким-либо образом оптимизировать таблицу?Или MySQL не заботится об этом огромном разрыве при вставке новых строк и последующем использовании индекса в операторах выбора (с точки зрения скорости)?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2011

MySQL руководство говорит:

OPTIMIZE TABLE следует использовать, если вы удалили большую часть таблицы или если вы внесли много изменений в таблицу с переменнойстроки

Но не сбрасывайте первичный ключ, он может испортить все.Тип данных INT (предположительно) имеет много возможностей для роста с 1M.

С точки зрения скорости запросов не имеет значения, равно ли значение индекса на 1 000 000 или на 1 000 000 000.

1 голос
/ 04 февраля 2011

Использование OPTIMIZE TABLE впоследствии помогает MySQL определить, как лучше / быстрее выполнять запросы, например. использовать индекс или просто сканирование таблицы? Для этого используется так называемая статистика, поэтому вызов OPTIMIZE TABLE, по сути, дает нам понять, что вы внесли существенное изменение.

...