Самый быстрый способ изменить тип данных столбца в SQL Server - PullRequest
3 голосов
/ 12 января 2010

В SQL Server 2008 у меня есть таблица из примерно 3 миллионов записей. Я хочу изменить тип одного из столбцов с float на int. Но, похоже, это займет много времени. Есть ли способ сделать это очень быстро?

Ответы [ 5 ]

2 голосов
/ 12 января 2010

Добавьте новый столбец int в таблицу, обновите новый столбец до значения старого столбца, удалите старый столбец, переименуйте новый столбец.

Мне кажется, что это будет быстрее, но я могу ошибаться!

Я предполагаю, что, поскольку это только что с плавающей точкой, это не используется ни в каких индексах.

2 голосов
/ 12 января 2010

Удалите все ограничения, индексы и триггеры для этой таблицы, они также замедляют обновление.

1 голос
/ 12 января 2010

Вы можете попробовать сделать новую таблицу и сделать маленький курсор для отправки данных из одной таблицы в другую. столик в меньших частях.

Если в вашей таблице указана дата, вы можете переместить ваши данные на квартал года пусть дышит между запросами.

0 голосов
/ 12 января 2010

Таблица ALter обычно быстрее, чем при использовании SSMS. Однако в этом случае я согласен с doogstar, так как вам нужно преобразовать все данные в int, я бы создал новый столбец, заполнив его (что вы можете сделать в пакетном режиме для повышения производительности и избежания блокировки таблицы), а затем отбросив старый столбец и переименуйте новый.

0 голосов
/ 12 января 2010

Скорее всего, здесь происходит то, что SSMS создает временную таблицу со старой схемой и копирует все строки в эту таблицу. Затем он создает новую таблицу с новой схемой и копирует обратно строки из старой таблицы. Я не думаю, что в SSMS есть что-то, что вы можете изменить, и это может быть единственным способом изменить эту конкретную схему.

Randy

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