Dalam basis data kami ada tabel besar yang kurang lebih terlihat seperti ini:
CREATE TABLE dbo.production_data
(
pd_id BIGINT PRIMARY KEY,
serial NVARCHAR(16) NOT NULL UNIQUE,
...
);
tapi sekarang ukuran bidang serial menjadi rendah, jadi saya ingin mengubahnya menjadi 32. Alat perbandingan skema Visual Studio menyarankan melakukan ini dengan:
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);
Apakah ini benar-benar dibutuhkan? Atau lebih seperti cara sangat hemat untuk melakukan ini?
Juga saat membuat ulang indeks unik, apakah meja saya akan terkunci? Karena ini akan menjadi masalah besar (karena tabel memiliki 30 juta baris dan saya kira membuat ulang indeks akan memakan waktu cukup lama), karena jendela pemeliharaan berikutnya adalah beberapa bulan di masa depan. Apa alternatif saya?