OPTIMIZE TABLE tbl_name[,tbl_name]...
Команда OPTIMIZE TABLE
должна использоваться после удаления большей части
таблицы или если в таблице было внесено много изменений в строки
переменной длины (таблицы, в которых есть столбцы VARCHAR
, BLOB
или TEXT
).
Удаленные записи поддерживаются при помощи связного списка, и последующие
операции INSERT
повторно используют позиции старых записей. Чтобы
перераспределить неиспользуемое пространство и дефрагментировать файл
данных, можно воспользоваться командой OPTIMIZE TABLE
.
На данный момент команда OPTIMIZE TABLE
работает только с таблицами MyISAM
и BDB
. Для таблиц BDB
команда OPTIMIZE TABLE
выполняет ANALYZE TABLE
. См.
раздел See Раздел 4.5.2, «Синтаксис команды ANALYZE TABLE
».
Можно применить OPTIMIZE TABLE
к таблицам других типов, запустив
mysqld
с параметром --skip-new
или --safe-mode
, но в этом случае
OPTIMIZE TABLE
лишь только выполняет ALTER TABLE
.
Команда OPTIMIZE TABLE
работает следующим образом:
Если в таблице есть удаленные или разделенные строки, восстанавливает таблицу.
Если индексные страницы не отсортированы - сортирует их.
Если статистические данные не обновлены (и восстановление нельзя осуществить путем сортировки индексов), обновляет их.
Команда OPTIMIZE TABLE
для MyISAM
представляет собой эквивалент
выполнения myisamchk --quick --check-only-changed --sort-index --analyze
над таблицей.
Обратите внимание: во время работы OPTIMIZE TABLE
таблица заблокирована!