gpt4 book ai didi

performance - 从 OFFSET/FETCH NEXT 获取总行数

转载 作者:行者123 更新时间:2023-12-03 05:13:38 24 4
gpt4 key购买 nike

所以,我有一个函数可以返回一些我想在我的网站上实现分页的记录。有人建议我使用 SQL Server 2012 中的 Offset/Fetch Next 来完成此操作。在我们的网站上,我们有一个区域列出了记录总数以及您当时所在的页面。

之前,我获取了整个记录集,并能够以编程方式在此基础上构建分页。但是使用仅 FETCH NEXT X ROWS 的 SQL 方式,我只返回 X 行,所以我不知道我的总记录集是什么以及如何计算我的最小和最大页数。我能告诉您执行此操作的唯一方法是调用该函数两次并在第一次上执行行计数,然后使用 FETCH NEXT 运行第二次。有没有更好的方法,不会让我运行查询两次?我正在努力提高性能,而不是降低性能。

最佳答案

我在使用 COUNT() OVER() 方法时遇到了一些性能问题。 (我不确定是否是服务器的问题,因为它花了 40 秒才返回 10 条记录,后来没有任何问题。)这种技术在所有条件下都有效,无需使用 COUNT() OVER( )并完成同样的事情:

DECLARE 
@PageSize INT = 10,
@PageNum INT = 1;

WITH TempResult AS(
SELECT ID, Name
FROM Table
), TempCount AS (
SELECT COUNT(*) AS MaxRows FROM TempResult
)
SELECT *
FROM TempResult, TempCount
ORDER BY TempResult.Name
OFFSET (@PageNum-1)*@PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY

关于performance - 从 OFFSET/FETCH NEXT 获取总行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12352471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com