首页 >数据库 >mysql教程 >如何从 SQL Server 表中高效地随机选择行样本?

如何从 SQL Server 表中高效地随机选择行样本?

Patricia Arquette
Patricia Arquette原创
2025-01-19 08:02:14774浏览

高效从SQL Server表中随机抽取行

从SQL Server表中生成随机样本对于各种目的来说都是一项有用的操作。一个常用的解决方案是从表中随机选择固定数量的行。

复杂方法的不足

文中提到的问题指出了使用临时表和RAND()循环的复杂方法。这些方法效率低下且不够灵活。

NEWID()方法的局限性

文中还提到了一种使用NEWID()函数的替代方法。然而,这种方法可能不适合选择特定百分比行的要求。

T-SQL解决方案

为了解决这个问题,文中提供了一个SQL Server脚本:

<code class="language-sql">select top 10 percent * from [yourtable] order by newid()</code>

此语句利用NEWID()函数和TOP子句选择前10%的行,返回表的随机样本。

针对大型表的优化方法

对于大型表,可以通过使用以下修改后的脚本来提高性能:

<code class="language-sql">select * from [yourtable] where [yourPk] in 
(select top 10 percent [yourPk] from [yourtable] order by newid())</code>

此方法分两步进行:首先,选择随机主键值;然后,使用这些主键值检索对应的行。它平衡了键扫描和连接成本,使其对大型表效率更高。

How Can I Efficiently Select a Random Sample of Rows from a SQL Server Table?

以上是如何从 SQL Server 表中高效地随机选择行样本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn