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

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

Susan Sarandon
发布: 2025-01-19 08:07:10
原创
662 人浏览过

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

从SQL Server表中高效选择随机样本

从大型SQL Server表中检索随机行样本对于各种目的都很有用。一种常见的方法是在临时表中生成一个“随机数”列,用随机值填充它,然后选择随机数在所需范围内的行。但是,这种方法可能复杂且效率低下。

更直接的方法是利用NEWID()函数。NEWID()根据系统时间和随机性的组合生成唯一的标识符。通过按NEWID()的输出对表进行排序,您可以有效地随机化行顺序。

要选择特定百分比的行,可以使用TOP子句。例如,要从名为[yourtable]的表中选择10%的行,可以使用以下查询:

<code class="language-sql">SELECT TOP 10 PERCENT *
FROM [yourtable]
ORDER BY NEWID();</code>
登录后复制

虽然此方法通常效率很高,但在处理特别大的表时可能会遇到性能问题。为了优化性能,您可以结合使用TOP和WHERE子句:

<code class="language-sql">SELECT *
FROM [yourtable]
WHERE [yourPk] IN (
    SELECT TOP 10 PERCENT [yourPk]
    FROM [yourtable]
    ORDER BY NEWID()
);</code>
登录后复制

此查询使用[yourPk]作为主键。内部查询检索所选行的主键,外部查询使用这些主键过滤表。这种方法通过减少扫描的行数来提高性能。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板