हमारे डेटाबेस में एक बड़ी तालिका मौजूद है जो कमोबेश इस तरह दिखती है:
CREATE TABLE dbo.production_data
(
pd_id BIGINT PRIMARY KEY,
serial NVARCHAR(16) NOT NULL UNIQUE,
...
);
लेकिन अब धारावाहिक क्षेत्र का आकार कम हो गया है, इसलिए मैं इसे 32 में बदलना चाहता हूं। विज़ुअल स्टूडियो स्कीमा तुलना उपकरण द्वारा यह करने की सलाह देता है:
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 मिलियन पंक्तियाँ हैं और मुझे लगता है कि सूचकांक को फिर से बनाने में काफी समय लगेगा), क्योंकि भविष्य में अगली रखरखाव खिड़की कुछ महीने है। मेरे विकल्प क्या हैं?