首頁 > 資料庫 > mysql教程 > 如何從 SQL Server 表中有效率地隨機選擇行樣本?

如何從 SQL Server 表中有效率地隨機選擇行樣本?

Patricia Arquette
發布: 2025-01-19 08:02:14
原創
774 人瀏覽過

高效率從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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板