【问题标题】: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#

【问题讨论】:

    标签: c# sql asp.net pagination large-data-volumes


    【解决方案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
    

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

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

    【讨论】:

    • 谢谢,但我正在尝试获取存储过程的总行数,它是几个表的连接。关于如何为此快速获取总行数的任何想法?
    • @droiddev 我链接了一个类似的 StackOverflow 帖子和一个来自建议答案之一的 sn-p。我希望这会有所帮助,不幸的是我没有满足这些标准的数据库来测试性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多