При увеличении размера столбца VARCHAR на большой таблице могут возникнуть какие-либо проблемы?
Я использую SQL Server 2008, и мне нужно сделать поле VARCHAR больше, от (200 до 1200) на таблице с примерно 500k строк. Мне нужно знать, есть ли какие-либо вопросы, которые я не рассматривал.
Я буду использовать этот оператор TSQL:
ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
Я уже пробовал его на копии данных, и это утверждение не имело никаких негативных последствий, которые я мог видеть.
Так есть ли какие-либо возможные проблемы от этого, что я, возможно, не рассматривал?
кстати, столбец не индексируется.
5 ответов:
Это только изменение метаданных: это быстро.
наблюдение: укажите NULL или NOT null явно, чтобы избежать "несчастных случаев", если один из установленных параметров ANSI_xx отличается, например, работает в osql не SSMS по какой-то причине
просто хотел добавить свои 2 цента, так как я погуглил этот вопрос b/c я оказался в аналогичной ситуации...
БУДЬТЕ В КУРСЕ что при изменении от
varchar(xxx)
tovarchar(yyy)
это изменение метаданных действительно, но меняется наvarchar(max)
нет. Потому чтоvarchar(max)
значения (aka BLOB values-image / text etc) хранятся по-разному на диске, а не в строке таблицы, но "вне строки". Таким образом, сервер сойдет с ума на большой стол и перестанет отвечать на запросы минуты (часы).--no downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200) --huge downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max)
PS. же самое относится и к
nvarchar
или курс.
переход на Varchar (1200) из Varchar(200) не должен вызывать никаких проблем, поскольку это только изменение метаданных, и поскольку SQL server 2008 усекает избыточные пробелы, вы также не должны видеть различий в производительности, поэтому вкратце не должно быть никаких проблем с внесением изменений.