Вызывает ли добавление или удаление столбцов в таблице пересоздание всех индексов? - PullRequest
4 голосов
/ 13 января 2012

В частности, в MySQL (хотя я предполагаю, что то же самое можно сказать о Oracle и Microsoft SQL Server).Если я добавлю или удалю столбец в таблицу, нужно ли создавать все текущие индексы (для этой таблицы) с нуля?

Я бы предположил, что если мы изменяем размер строки таблицы (добавляя / удаляястолбцы), тогда изменятся ROWIDS (некластеризованная таблица), что приведет к повторному созданию всех индексов.

Если используется кластеризованный индекс (Index Organized Table в Oracle), то я мог бы предположить, что весь кластеризованный индекс также должен быть воссоздан.

Если все индексы необходимо воссоздатьЕсть ли какие-либо стратегии для оптимизации времени восстановления?

1 Ответ

2 голосов
/ 14 января 2012

Вы не сказали, какая версия MySQL и какой механизм хранения.Но я подозреваю, что ответ на ваш вопрос находится на этой странице:

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

Краткий ответ на ваш вопрос: Да, вся таблица будет перестроена (все данные и все индексы)когда вы добавляете или удаляете столбец.Чтобы повысить скорость, попробуйте следующее:

MyISAM: увеличить значение myisam_sort_buffer_size

InnoDB: увеличить innodb_buffer_pool_size
увеличить innodb_log_file_size

* 1012Типы данных столбцов для ваших столбцов.

Источник: я сертифицированный администратор баз данных MySQL.

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