首頁 >資料庫 >mysql教程 >如何在SQL Server中有效率地選擇大量行?

如何在SQL Server中有效率地選擇大量行?

Patricia Arquette
Patricia Arquette原創
2024-12-31 20:29:141015瀏覽

How Can I Efficiently Select a Large Number of Rows in SQL Server?

在SQL Server 中選擇行

提供的查詢無法傳回超過7374 行,因為它耗盡了sys.path 中的行數。列表。為了克服這個限制,更有效的方法是使用級聯 CTE 產生「計數表」或「數字表」。

這是使用級聯 CTE 的最佳化查詢:

DECLARE @Range AS INT = 7374

;WITH E1(N) AS( -- 10 ^ 1 = 10 rows
    SELECT 1 FROM(VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))t(N)
),
E2(N) AS(SELECT 1 FROM E1 a CROSS JOIN E1 b), -- 10 ^ 2 = 100 rows
E4(N) AS(SELECT 1 FROM E2 a CROSS JOIN E2 b), -- 10 ^ 4 = 10,000 rows
E8(N) AS(SELECT 1 FROM E4 a CROSS JOIN E4 b), -- 10 ^ 8 = 10,000,000 rows
CteTally(N) AS(
    SELECT TOP(@Range) ROW_NUMBER() OVER(ORDER BY(SELECT NULL))
    FROM E8
)
SELECT * FROM CteTally

這種方法非常高效,因為它產生零讀取並擴展到極大數量的行。有關效能比較和計數表的更多信息,請參閱回應中提供的連結資源。

以上是如何在SQL Server中有效率地選擇大量行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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