首页 > 数据库 > mysql教程 > 如何在保持性能的同时高效地对 SQL Server 中的大型数据集进行分页?

如何在保持性能的同时高效地对 SQL Server 中的大型数据集进行分页?

Patricia Arquette
发布: 2025-01-22 00:52:12
原创
961 人浏览过

How Can I Efficiently Paginate Large Datasets in SQL Server While Maintaining Performance?

针对大型数据集优化 SQL Server 中的分页

向用户有效地呈现大型数据集需要分页——每页仅显示结果的一部分。 然而,在不影响性能的情况下实现分页至关重要,尤其是在需要事先计算总结果计数时。

旧版 SQL Server 版本 (2000-2008):行编号

在 SQL Server 2012 之前,行编号是标准分页技术。 这涉及使用 ROW_NUMBER() 分配行号并根据页面大小和数量进行过滤。虽然有效,但事实证明这种方法对于大量数据集效率低下。

SQL Server 2012 及更高版本:OFFSETFETCH

SQL Server 2012 引入了高级 OFFSETFETCH 子句。它们直接跳过指定数量的行并仅检索所需的子集。通过消除行编号的开销,这显着提高了大型数据集的性能。

示例性查询

以下查询演示了在 SQL Server 2012 及更高版本中使用 OFFSETFETCH 检索初始 10 行和总行数:

<code class="language-sql">DECLARE @RowsPerPage INT = 10;

WITH TotalResults AS (
  SELECT COUNT(*) OVER() AS TotalRows
  FROM TableName
)
SELECT *
FROM TableName
ORDER BY id
OFFSET 0 ROWS
FETCH NEXT @RowsPerPage ROWS ONLY;

SELECT TotalRows
FROM TotalResults;</code>
登录后复制

重要提示:

  • 使用 ORDER BYOFFSET 时,FETCH 子句是强制性的。
  • OFFSET必须伴随FETCH; 它们不能与 TOP.
  • 一起使用
  • 使用 OFFSETFETCH 可以显着提高性能,尤其是在处理大量数据集时。

以上是如何在保持性能的同时高效地对 SQL Server 中的大型数据集进行分页?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板