需要從資料表隨機抽取資料列?SQL Server 提供極簡單且強大的單行語法:
SELECT * FROM Person.Person ORDER BY NEWID();
NEWID() 為每列產生唯一的 UNIQUEIDENTIFIER 值。ORDER BY 邏輯發生在 SELECT 列表投射**之後**,NEWID() 欄位本身**不會**出現在最終結果集中。
TABLESAMPLE (n PERCENT/ROWS):頁面層級抽樣,極快但非真隨機、可能回傳 0 列。WHERE RAND(CHECKSUM(*) * NEWID()) < 0.01:Bernoulli 抽樣,單次掃描無排序,近似隨機。RAND() 或 NEWID() 定期更新),查詢時直接 ORDER BY RandomKey。ORDER BY NEWID() 完美適用。TABLESAMPLE 或預計算隨機鍵。ORDER BY NEWID() 是 SQL Server 內建最直觀的隨機取樣寫法,理解其「全表排序」本質,依資料量與 SLA 選擇最適策略。