Dans notre base de données existe une grande table qui ressemble plus ou moins à ceci:
CREATE TABLE dbo.production_data
(
pd_id BIGINT PRIMARY KEY,
serial NVARCHAR(16) NOT NULL UNIQUE,
...
);
mais maintenant la taille du champ série est devenue trop faible, donc je veux le changer à 32. L'outil de comparaison de schéma Visual Studio suggère de le faire en:
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);
Est-ce vraiment nécessaire? Ou plus comme une façon ultra économique de le faire?
De plus, lors de la recréation de l'index unique, ma table sera-t-elle verrouillée? Parce que ce serait un gros problème (car la table a 30 millions de lignes et je suppose que recréer l'index prendra un certain temps), car la prochaine fenêtre de maintenance est de quelques mois dans le futur. Quelles sont mes alternatives?