为了账号安全,请及时绑定邮箱和手机立即绑定

从SQLServer表中选择n个随机行

从SQLServer表中选择n个随机行

繁星点点滴滴 2019-07-16 16:28:42
从SQLServer表中选择n个随机行我有一个SQL Server表,其中包含大约50,000行。我想随机选择其中的5,000行。我想到了一种复杂的方法,创建一个带有“随机数”列的临时表,将我的表复制到其中,循环遍历临时表,然后用RAND(),然后从该表中选择随机数列<0.1的表。如果可能的话,我正在寻找一种更简单的方法。这篇文章建议使用NEWID()功能。这看起来很有希望,但我不知道如何可靠地选择一定百分比的行。以前有人这么做过吗?有什么想法吗?
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

取决于你的需要TABLESAMPLE会给你带来几乎一样的随机和更好的表现。这可在MS SQL Server 2005及更高版本上使用。

TABLESAMPLE将从随机页而不是随机行返回数据,因此DEOS甚至不会检索它不会返回的数据。

在一个很大的桌子上我测试了

select top 1 percent * from [tablename] order by newid()

花了20多分钟。

select * from [tablename] tablesample(1 percent)

花了两分钟。

中的较小样本的性能也将得到改善。TABLESAMPLE而它不会newid().

请记住,这并不像newid()方法,但会给你一个像样的抽样。

MSDN页面.


查看完整回答
反对 回复 2019-07-16
  • 3 回答
  • 0 关注
  • 1172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信