如何用随机值更新多行

Abo*_*ing 5 sql sql-server random performance 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

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

Gor*_*off 5

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

Update Network_Info_Detail
    set ART = (rand(checksum(newid()))*4000)+2,
        NRT = (rand(checksum(newid()))*1000)+2;
Run Code Online (Sandbox Code Playgroud)