c# – 在SQL Server上执行分页的最佳方法是什么?

前端之家收集整理的这篇文章主要介绍了c# – 在SQL Server上执行分页的最佳方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个超过200万条记录的数据库,我需要在我的Web应用程序上执行分页,以便在DataGrid中每页10条记录.

我已经尝试使用ROW_NUMBER(),但这样将会选择所有的200万条记录,然后只得到10条记录.我也尝试使用TOP 10,但我必须保存第一个和最后一个id来控制页面.我读过,使用DataAdapter.Fill()将选择所有的内容,然后得到我需要的10条记录.

哪个是最好的方法?我应该使用DataAdapter.Fill()吗?还是使用sql Server的函数ROW_NUMBER()?或尝试使用TOP 10?

解决方法

ALTER PROCEDURE [dbo].[SP_tblTest_SelectSpecificRecordsWithCTE]
    @FromRow int = 1000000,@PgSize int = 10
AS
BEGIN
    ;WITH RecordsRN AS
    (
        select ID,colValue,ROW_NUMBER() over(order by colvalue) as Num from tblTest
    )
    SELECT ID Value,colValue Text FROM RecordsRN WHERE Num between @FromRow AND (@FromRow+@PgSize-1)
END

这是我用于分页查询.使用它,你会得到你需要10个记录4-5秒.我在3秒内获得10条记录,我的数据库中的总记录是1000万,不要使用前10名,每次只能带来相同的10条记录.在我的情况下,我在会话中维护页面大小和起始行号(@FromRow),并将这两个值传递给下面给出的存储过程并获取结果.
更进一步如果您使用sql 2012,您可能需要使用OFFSET和Fetch接下来的10行的事情.在google上搜索关于OFFSET关键字,您将在上面看到您想要的结果.

谢谢

猜你在找的C#相关文章