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

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

Patricia Arquette
發布: 2024-12-31 20:29:14
原創
992 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板