MSSQL大資料量增加欄位耗時對比

何隨風發表於2016-08-02

單個資料表記錄數為1億4千萬條.

一、測試同時增加兩個允許為空的欄位.

ALTER TABLE [dbo].[XRecord] ADD [sType] int,[cType] int

GO

開始時間:2016-08-02 14:55:33.553

完成時間:2016-08-02 14:55:34.430

總共耗時:877毫秒

 

更新資料值

UPDATE [dbo].[XRecord] SET [sType]=0,[cType]=0

開始時間:2016-08-02 15:01:46.293

完成時間:2016-08-02 16:38:39.230

總共耗時:1小時37分

 

增加欄位描述

使用sp_addextendedproperty和sp_updateextendedproperty操作

 

開始時間:2016-08-02 17:13:34.557

完成時間:2016-08-02 17:13:36.050

總共耗時:1.5秒

 

 

二、試同時增加兩個不允許為空的欄位

ALTER TABLE [dbo].[XRecord] ADD [sType] int NOT NULL,[cType] int NOT NULL

GO

開始時間:2016-08-02 17:16:04.580

完成時間:2016-08-02 18:07:39.247

總共耗時:51分鐘35秒

 

三、修改欄位的預設值

BEGIN TRANSACTION
GO
ALTER TABLE [dbo].[XRecord] ADD CONSTRAINT
    DF_P_XRecord_cType DEFAULT 999999 FOR cType
GO
ALTER TABLE [dbo].[XRecord]SET (LOCK_ESCALATION = TABLE)
GO
COMMIT

開始時間:2016-08-02 18:08:56.680

完成時間:2016-08-02 18:08:58.165

總共耗時:0分鐘1秒

 

四、增加欄位同時設定非空及預設值

BEGIN TRANSACTION
GO
ALTER TABLE [dbo].[XRecord] ADD [sType] int NOT NULL DEFAULT 0 , [cType] int NOT NULL DEFAULT 0
GO
ALTER TABLE [dbo].[XRecord] SET (LOCK_ESCALATION = TABLE)
GO
COMMIT

開始時間:2016-09-08 11:47:21

完成時間:2016-09-08  13:45:41

總共耗時:1小時58分鐘20秒191毫秒

 

五、增加欄位同時設定預設值

BEGIN TRANSACTION
GO
ALTER TABLE [dbo].[XRecord] ADD [serviceType2] int DEFAULT 0 , [costType2] int DEFAULT 0
GO
ALTER TABLE dbo.XRecord SET (LOCK_ESCALATION = TABLE)
GO
COMMIT

開始時間:2016-09-08 13:52:37.977

完成時間:2016-09-08 13:52:38.913

總共耗時:996毫秒

 

注:以上測試均在沒有其他使用者運算元據庫及沒有從庫的情況下執行.

相關文章