從相當大的 SQL Server 表中提取行的隨機子集可能需要大量計算。 與使用複雜的臨時表和迭代過程相比,更有效率、更直接的方法是利用 SQL Server 固有的功能。
NEWID()
函數產生唯一的隨機 GUID,為隨機行選擇提供基礎。 若要從名為 [yourtable]
的表格中擷取 10% 隨機樣本,請使用以下簡潔查詢:
<code class="language-sql">SELECT TOP 10 PERCENT * FROM [yourtable] ORDER BY NEWID()</code>
對於更大的表,可以透過此技術實現效能最佳化:
<code class="language-sql">SELECT * FROM [yourtable] WHERE [yourPk] IN (SELECT TOP 10 PERCENT [yourPk] FROM [yourtable] ORDER BY NEWID())</code>
此方法利用鍵掃描來找出所選行的主鍵值,隨後與原始表連接以檢索完整的行資料。 此連接操作通常會產生最小的開銷,特別是對於大型資料集上的小百分比選擇。
這些簡化的技術為開發人員提供了一種從 SQL Server 表中選擇隨機樣本的高效方法,避免了複雜且佔用資源的替代方案。
以上是如何有效率地從 SQL Server 表中選擇隨機行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!