5
update語句我用下面的代碼從You've Been Haacked blog post有需要重新編碼表中的行:自動遞增,導致重複值的大表
DECLARE @counter int
SET @counter = 0
UPDATE #myTable
SET @counter = ID = @counter + 1
這正常工作與一些記錄到幾千元,但是當我在具有250K +記錄的表上的SQL Server 2012(64位)實例上運行它時,我最終得到許多重複項(ID#1出現12次)。總共有大約27K個重複值的記錄。奇怪的是,大約19K有12個傻瓜(我的機器上的處理器數量相同)。
重複的原因是什麼?
我會說這條語句並行執行,而不是逐行執行。因此,計數器不會遞增「足夠快」。, –
你能發佈你的查詢計劃嗎? – dsolimano
這不是執行此操作的最佳方法。 @GiorgiNakeuri已經說過,ROW_NUMBER會是一個更好的方法。您可以添加查詢提示OPTION(MAXDOP 1)以防止它溢出到多個處理器上。但表現可能會受到影響。 –