1

可能重复:
来自大型数据集的随机抽样

我之前在这里发布了一个问题

我以为一切都很好,花花公子,但是当我去检查结果的随机性时,我发现没有。查询的其他方面工作正常,但top X无论我尝试做什么,我都从表中获取数字。由于 SQL Server 不允许您在子查询中使用 order by 子句,我怎样才能解决这个问题以确保我得到一个真正随机的样本?

4

1 回答 1

1

ORDER BY只要指定TOP子句,就可以在子查询中使用。

旧的技巧是SELECT TOP 100 PERCENT ... ORDER BY NEWID()在您的子查询中使用来欺骗优化器以实现子查询中间查询。

SQL 优化器团队的高级人员后来表示,优化器现在知道将返回所有行并忽略它(尽管它仍然值得一试)

如果失败,请尝试SELECT TOP 2147483647 ... ORDER BY NEWID()完成与TOP 100 PERCENT

于 2012-11-29T17:44:46.620 回答