Лично я думаю, что вариант в варианте 2 звучит как лучший подход.
- Создать новую таблицу как select * from
старый стол
- Создание индексов на новой таблице (*)
- Переименуйте старую таблицу во что-то
отличается
- Переименовать новую таблицу в старое имя таблицы
- Переключение любых ограничений внешнего ключа с
старый стол на новый стол. Также переводите любые гранты, синонимы и т. Д.
- Отбросить старый стол в медленном времени
(*) Для однораздельной таблицы, вероятно, потребуются другие индексы от многораздельной. Если вы особенно привязаны к именам индексов, вы можете использовать синтаксис ALTER INDEX ... RENAME TO ...
после шага 6.
Преимущество этого подхода состоит в том, что он сводит к минимуму время простоя (в основном шаги 3, 4 и 5).