我有一个 SQL Server 表,其中包含大约 50,000 行。我想随机选择其中大约 5,000 行。我想到了一种复杂的方法,创建一个带有“随机数”列的临时表,将我的表复制到其中,循环遍历临时表并用RAND()
,然后从该表中选择随机数列
本文 http://www.sql-server-helper.com/tips/generate-random-numbers.aspx建议使用NEWID()
功能。这看起来很有希望,但我不知道如何可靠地选择一定百分比的行。
以前有人这样做过吗?有任何想法吗?
select top 10 percent * from [yourtable] order by newid()
回应有关大表的“纯粹垃圾”评论:您可以这样做以提高性能。
select * from [yourtable] where [yourPk] in
(select top 10 percent [yourPk] from [yourtable] order by newid())
其成本将是值的键扫描加上连接成本,这在具有较小百分比选择的大型表上应该是合理的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)