我想知道如果任何人都可以給我這個問題的指針。我假設其他人以前經歷過這種情況,並且想知道什麼是最有效的。最佳/最有效的方式爲nvarchar(最大)轉換到爲nvarchar(30)
我有一個正在相當長的處理,主要是因爲我們還沒有設置一個ID字段索引生產數據。
ID字段是目前爲nvarchar(最大),所以它不能被索引。此ID不超過30個字符,因此我想將數據類型更改爲nvarchar(30)。但是,我注意到使用諸如以下語句:
ALTER TABLE [dbo].[Table] ALTER COLUMN [Column1] NVARCHAR (30) NOT NULL
已經爲較小的表佔用大量時間。我擔心它可能不適用於較大的表格,因爲DiskIO對於較小的表格已經非常高。
請問以下是更快,可能它的工作?
- 使用nvarchar(30)數據類型創建一個新列。
- 然後將數據從nvarchar(max)列複製到nvarchar(30)列。
- 然後刪除nvarchar(max)列。
- 然後將nvarchar(30)列重命名爲nvarchar(max)列的名稱?
有沒有人有任何建議,什麼可能是更好?
任何指針/幫助將不勝感激!
我會建議將數據複製到另一個位置,截斷表,數據類型的改變,並重新插入數據。你需要做最後一部分的日誌記錄或使用'bulk insert'。 –
可能的重複[SQL Server性能改變表alter column更改數據類型](https://stackoverflow.com/questions/4311559/sql-server-performance-for-alter-table-alter-column-change-data-類型) – Joey