如何在不知道数据库总行数的情况下执行自定义分页

Posted

技术标签:

【中文标题】如何在不知道数据库总行数的情况下执行自定义分页【英文标题】:How to perform custom pagination without knowing the total number of rows from DB 【发布时间】:2020-03-09 21:33:46 【问题描述】:

我正在尝试执行分页。我正在使用存储过程来获取我的数据。如果我在我的桌子上做 Count(*),因为桌子很大,所以需要几分钟才能给我结果。在不知道总行数的情况下,我还能如何进行分页。

我尝试获取有关页面大小的数据,并尝试在后台的异步调用中从 DB 获取总行数,以便我可以快速加载页面,但获取总行数以计算正确的页数为以后。它并没有真正起作用。任何建议将不胜感激。使用sql server、ASP.net、C#

【问题讨论】:

【参考方案1】:

这应该让您更快地获得总行数:

DECLARE @TotalRows INT = 0;

SELECT @TotalRows =  max(ROWS)
from sysindexes
where id = object_id('YourTableName')

编辑:@droiddev 存储过程结果行计数的可能解决方案:

Create procedure procedurename
AS
Begin

    Select * from Table --if you want where condition write here

End

Exec Procedurename

Select @@rowcount

摘自这篇 *** 帖子:Counting the number of rows returned by stored procedure

我还没有测试过它是否更快,但问题基本上和你的一样。

【讨论】:

谢谢,但我正在尝试获取存储过程的总行数,它是几个表的连接。关于如何为此快速获取总行数的任何想法? @droiddev 我链接了一个类似的 *** 帖子和一个来自建议答案之一的 sn-p。我希望这会有所帮助,不幸的是我没有满足这些标准的数据库来测试性能。

以上是关于如何在不知道数据库总行数的情况下执行自定义分页的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在不使用 ObjectDataSource 的情况下自定义 GridView(在 ASP.NET 中,最好是 3.5)分页?

如何在不知道其宽度的情况下将 ul li 列表居中? (分页)

在不使用子查询的情况下使用 SELECT DISTINCT ON 计算总行数

primefaces 中 如何得到表格的总行数

如何在不点击的情况下从 Chrome 自定义标签中捕获 URL?

Jackson:如何在不修改 POJO 的情况下向 JSON 添加自定义属性