ฉันเพิ่งเพิ่มคอลัมน์บิตแบบ NULL ไปยังตารางที่มีเกือบ 500 ล้านแถว ไม่มีค่าเริ่มต้นในคอลัมน์อย่างไรก็ตามส่วนแทรกทั้งหมดกำลังระบุค่าเป็น 0 หรือ 1 และฉันใช้รูทีนแบบครั้งเดียวเพื่อกำหนด 0 หรือ 1 ให้กับแถวที่มีอยู่ทั้งหมด (อัปเดตแถวเป็นชุดเล็ก ๆ ) ตอนนี้ทุกแถวควรมี 0 หรือ 1 ในคอลัมน์นั้น
ฉันต้องการทำให้คอลัมน์บิตเป็นโมฆะไม่ได้ แต่เมื่อฉันพยายามทำมันผ่านALTER TABLE t1 ALTER COLUMN c1 bit not null
มันเริ่มทำงานเป็นเวลา 3 นาทีและฉันหยุดมันเพราะมันบล็อกการอ่านตารางทั้งหมดและฉันสงสัยว่ามันจะใช้เวลานานกว่าจะเสร็จสมบูรณ์ . เป็นไปได้ที่จะใช้เวลาไม่นาน แต่ฉันไม่สามารถเสี่ยงกับการขาดความพร้อมมากเกินไป การย้อนกลับใช้เวลา 6 นาที
คุณมีคำแนะนำใด ๆ เกี่ยวกับวิธีที่ฉันจะทำให้คอลัมน์ไม่เป็นโมฆะโดยที่ไม่ต้องใช้เวลาหลายชั่วโมงกว่าจะเสร็จ นอกจากนี้ยังมีวิธีใดที่จะประมาณว่าALTER TABLE ALTER COLUMN
คำสั่งที่ฉันเริ่มและยกเลิกจะใช้เวลานานเท่าใด
ฉันใช้ SQL Server 2017 Web Edition
SELECT c1, count(*) FROM t1 GROUP BY c1
ซึ่งใช้เวลาประมาณ 9 นาทีในการรัน ข้อความจริงALTER TABLE ALTER COLUMN
หลังจากนั้นใช้เวลา 25 นาทีจึงจะเสร็จสมบูรณ์ ก็ไม่เลวนะ.