首页 >数据库 >mysql教程 >如何在SQL Server中高效地选择大量行?

如何在SQL Server中高效地选择大量行?

Patricia Arquette
Patricia Arquette原创
2024-12-31 20:29:141000浏览

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