c# – 在SQL Server上执行分页的最佳方法是什么?
发布时间:2020-12-15 06:36:05 所属栏目:百科 来源:网络整理
导读:我有一个超过200万条记录的数据库,我需要在我的Web应用程序上执行分页,以便在DataGrid中每页10条记录. 我已经尝试使用ROW_NUMBER(),但这样将会选择所有的200万条记录,然后只得到10条记录.我也尝试使用TOP 10,但我必须保存第一个和最后一个id来控制页面.我读
我有一个超过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),并将这两个值传递给下面给出的存储过程并获取结果. 谢谢 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |