В нашей базе данных существует большая таблица, которая более или менее выглядит так:
CREATE TABLE dbo.production_data
(
pd_id BIGINT PRIMARY KEY,
serial NVARCHAR(16) NOT NULL UNIQUE,
...
);
но теперь размер последовательного поля стал слишком низким, поэтому я хочу изменить его на 32. Средство сравнения схем Visual Studio предлагает сделать это следующим образом:
DROP INDEX ux_production_data_serial ON dbo.production_data;
GO
ALTER TABLE dbo.production_data ALTER COLUMN serial NVARCHAR(32) NOT NULL;
GO
CREATE INDEX ux_production_data_serial ON dbo.production_data(serial ASC);
Это действительно нужно? Или больше похоже на ультра экономичный способ сделать это?
Кроме того, будет ли заблокирована моя таблица при воссоздании уникального индекса? Потому что это было бы большой проблемой (так как таблица имеет 30 миллионов строк, и я думаю, что воссоздание индекса займет довольно много времени), потому что следующее окно обслуживания будет через несколько месяцев. Каковы мои альтернативы?