從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>
此方法分兩步驟進行:首先,選擇隨機主鍵值;然後,使用這些主鍵值來擷取對應的行。它平衡了鍵掃描和連接成本,使其對大型表效率更高。
以上是如何從 SQL Server 表中有效率地隨機選擇行樣本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!