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