[英]Best/most efficient way to convert Nvarchar(max) to nvarchar (30)
我想知道是否有人可以給我指出這個問題的指針。 我假設其他人以前曾經經歷過,並且想知道什么是最有效的。
我的生產數據需要花費相當長的時間來處理,主要是因為我們尚未在ID字段上設置索引。
ID字段當前為nvarchar(max),因此無法編制索引。 該ID的長度不得超過30個字符,因此我想將數據類型更改為nvarchar(30)。 但是,我注意到使用了如下語句:
ALTER TABLE [dbo].[Table] ALTER COLUMN [Column1] NVARCHAR ( 30 ) NOT NULL
對於較小的表,已經花費了大量時間。 我擔心它甚至可能不適用於較大的表,因為DiskIO對於較小的表已經很高了。
以下內容會更快並且可以工作嗎?
有沒有人對更好的建議?
任何指針/幫助將不勝感激!
我們通過創建一個空的新列(NULL)並批量更新來解決類似的問題
update top (5000) myTable --parentheses are mandatory, set a small number to avoid transaction log issues
set newCol = oldCol -- or left(oldCol,30) not sure your data
where newCol is null
go 10000 --runs 10,000 times, set accordingly to your rows amount, this covers 50 million rows(5,000x10,000)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.