Как быстро удалить индекс из таблицы?

Статус
В этой теме нельзя размещать новые ответы.

Tima111

Читатель
Заблокирован
Регистрация
5 Июл 2007
Сообщения
218
Реакции
488
  • Автор темы
  • Заблокирован
  • #1
Делаю так:
PHP:
ALTER TABLE `tablica` DROP INDEX `index`
в MySQL этот запрос висит со статусом "copy to tmp table" уже второй день...
Компьюетр очень сильно подвисает.
Может можно удалить индекс без "copy to tmp table"? В таблице 20 миллионов записей.
 
Второй день говоришь? это уже не здорово, копай в сторону настроек мускула.
 
  • Автор темы
  • Заблокирован
  • #3
Вообще странно, некоторые индексы удаляются практически моментально, а именно 2 индекса больше дня уже заняли...
Может кто свои настройки скинет my.cnf?
Машина С2D E6400 4Gb памяти.
 
Делаю так:
PHP:
ALTER TABLE `tablica` DROP INDEX `index`
в MySQL этот запрос висит со статусом "copy to tmp table" уже второй день...
Компьюетр очень сильно подвисает.
Может можно удалить индекс без "copy to tmp table"? В таблице 20 миллионов записей.
MySQL, насколько помню, для всех ALTER TABLE производит полный REBUILD таблиц. Поэтому на миллионных таблицах обычно бывает проще создать новую без этого индекса, перенести в нее данные и затем удалить старую таблицу. Если движок используется MyISAM, то это точно будет быстрее.
 
  • Автор темы
  • Заблокирован
  • #5
Спасибо, уже решил проблему, что-то с ПК было похоже :)
3 дня он индекс удалял, потом мне надоело (комп подвисал сильно) и я его перезагрузил.
Снова стал удалять индекс из таблицы - удалился за 14 часов :)
 
Сталкивался с подобным. Если в таблице много записей (и полей), индекс удаляется долго. Но 14 часов это круто конечно. ;)
 
В таких случаях бывает удобнее создавать копию таблицы без ключей, затем создать нужные. И поменять таблицы местами)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху