Hi Team,
We have in one of our upcoming release two columns being added to a table that has over 20 million records and 14 indexes.
We needed to add two columns to the table both not null (bit). Because it was taking a while to add the columns, we thought that putting these two alter statements in one batch would speed up the operation significantly but to my surprise it did not.
Conclusion from my test: individual alter statements or batch alter statements take the same time
Here are me test and results - table Order1 and Order2 are exactly the same structure and data.
Test case 1:
===================
ALTER TABLE Order1
ADD OR_N BIT DEFAULT 0 NOT NULL
go
ALTER TABLE AccountTradeConfirmation_Alter1
ADD OR_S BIT DEFAULT 0 NOT NULL
Go
Elapsed Time: 2 hrs
-------------------------------
Mar 18 2015 5:56PM
(1 row affected)
Non-clustered index (index id = 3) is being rebuilt.
Non-clustered index (index id = 4) is being rebuilt.
Non-clustered index (index id = 5) is being rebuilt.
Non-clustered index (index id = 6) is being rebuilt.
Non-clustered index (index id = 7) is being rebuilt.
Non-clustered index (index id = 8) is being rebuilt.
Non-clustered index (index id = 9) is being rebuilt.
Non-clustered index (index id = 10) is being rebuilt.
Non-clustered index (index id = 11) is being rebuilt.
Non-clustered index (index id = 12) is being rebuilt.
Non-clustered index (index id = 13) is being rebuilt.
Non-clustered index (index id = 14) is being rebuilt.
(21777920 rows affected)
Non-clustered index (index id = 3) is being rebuilt.
Non-clustered index (index id = 4) is being rebuilt.
Non-clustered index (index id = 5) is being rebuilt.
Non-clustered index (index id = 6) is being rebuilt.
Non-clustered index (index id = 7) is being rebuilt.
Non-clustered index (index id = 8) is being rebuilt.
Non-clustered index (index id = 9) is being rebuilt.
Non-clustered index (index id = 10) is being rebuilt.
Non-clustered index (index id = 11) is being rebuilt.
Non-clustered index (index id = 12) is being rebuilt.
Non-clustered index (index id = 13) is being rebuilt.
Non-clustered index (index id = 14) is being rebuilt.
(21777920 rows affected)
-------------------------------
Mar 18 2015 7:52PM
Test case 2:
===================
ALTER TABLE Order2
ADD OR_N BIT DEFAULT 0 NOT NULL, OR_S BIT DEFAULT 0 NOT NULL
go
2 hrs elapsed time
-------------------------------
Mar 20 2015 11:10AM
(1 row affected)
Non-clustered index (index id = 3) is being rebuilt.
Non-clustered index (index id = 4) is being rebuilt.
Non-clustered index (index id = 5) is being rebuilt.
Non-clustered index (index id = 6) is being rebuilt.
Non-clustered index (index id = 7) is being rebuilt.
Non-clustered index (index id = 8) is being rebuilt.
Non-clustered index (index id = 9) is being rebuilt.
Non-clustered index (index id = 10) is being rebuilt.
Non-clustered index (index id = 11) is being rebuilt.
Non-clustered index (index id = 12) is being rebuilt.
Non-clustered index (index id = 13) is being rebuilt.
Non-clustered index (index id = 14) is being rebuilt.
(21777920 rows affected)
-------------------------------
Mar 20 2015 1:12PM