簡體   English   中英

SQL更改包含大量數據的列數據類型

[英]SQL change column data type with lots of data

我有一個包含數百萬條記錄的表。

我正在將一個列數據類型改為另一個(金錢到十進制)

注意到執行alter語句需要很多時間。 可能是因為有很多數據。

有沒有辦法提高這種情況的性能?

在一次交易中,所有數百萬行必須同時更改

另一種選擇是創建一個新表,批量插入,刪除舊表,重命名新表。 但是,這種方式可能需要更長的時間。

一種方法是使用新列類型創建臨時表,將原始表中的數據復制到temp,刪除原始數據,然后重命名temp。

CREATE TABLE dbo.tmp_MyTable 
   (ID Integer, Name varchar (100), MyChangedField decimal (8,2))

INSERT INTO dbo.tmp_MyTable SELECT * FROM dbo.MyTable

DROP TABLE dbo.MyTable

EXECUTE sp_rename N'dbo.tmp_MyTable', N'MyTable', 'OBJECT'

請記住,這是一個非常簡單的例子。 如果原始表具有索引,鍵和/或默認值,則還必須處理它們。

一個簡單的技巧是在SQL Server Management Studio表設計器中進行更改並生成更改腳本以查看需要完成的外包。

將新的十進制列添加到表中是否有任何時間好處,使用CAST()在多個批次中從money列填充它,當完成所有操作后,丟棄money列?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM