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

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

Susan Sarandon
Susan Sarandon原創
2025-01-19 08:07:10700瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn