如何使用随机值更新许多行

时间:2014-05-20 12:05:55

标签: sql sql-server performance random sql-update

我想对表执行更新查询,并将2列设置为随机值。这是一个例子:

Update Network_Info_Detail set ART = (rand()*4000)+2, NRT = (rand()*1000)+2

很明显,所有行都会使用随机生成的相同值进行更新,因此我需要创建一个循环来为每行生成一个随机值。

DECLARE @size integer SET @size = (SELECT Count(*) from Network_Info_Detail) While @size > 1 BEGIN Update top (@size) Network_Info_Detail set ART = (rand()*4000)+2, NRT = (rand()*1000)+2 SET @size = @size - 1 END

此脚本更新具有不同数字的行,但速度非常慢。有没有办法改善执行时间?

1 个答案:

答案 0 :(得分:4)

您可以使用SQL Server技巧生成随机数:rand(checksum(newid()))

Update Network_Info_Detail
    set ART = (rand(checksum(newid()))*4000)+2,
        NRT = (rand(checksum(newid()))*1000)+2;