有效地随机化(洗牌)Sql Server 表中的数据

Mil*_*had 4 sql sql-server random

我有一个表格,里面有我必须随机化的数据。通过随机化,我的意思是使用来自随机行的数据来更新同一列中的另一行。问题是表本身很大(超过 2 000 000 行)。

我写了一段使用while循环的代码,但速度很慢。

有没有人对实现随机化的更有效方法有任何建议?

Mit*_*eat 6

为了更新行,更新需要大量的处理时间(CPU + I/O)。

您是否测量过随机化行与执行更新的相对开销?

您需要做的就是选择随机行,这是一种选择随机行样本的有效方法(在本例中为 1% 的行)

SELECT * FROM myTable
WHERE 0.01 >= CAST(CHECKSUM(NEWID(), pkID) & 0x7fffffff AS float) / CAST (0x7fffffff AS int)
Run Code Online (Sandbox Code Playgroud)

pkID你的主键列在哪里。

这篇文章可能很有趣: