云服务器网:购买云服务器和VPS必上的网站!

MSSQL怎么实现分页技能

本文将主要讲述怎样使用Microsoft SQL Server(MSSQL) 实现分页,使用MSSQL数据库的实践实现分页的技能。
分页是很多网站在展现数据经常用的技术,它可以将数据依照页数划分,有益于页面美观、用户体验、性能优化和检索功能。但是,数据库分页技

本文将主要讲述怎样使用Microsoft SQL Server(MSSQL) 实现分页,使用MSSQL数据库的实践实现分页的技能。

分页是很多网站在展现数据经常用的技术,它可以将数据依照页数划分,有益于页面美观、用户体验、性能优化和检索功能。但是,数据库分页技术相对来讲比较复杂,某些时候会影响性能。因此,如果需要使用MS SQL数据库时,就需要熟习怎么用它实现分页。

在MSSQL中实现分页也能够通过两种方式:“Rowset临时表”和“游标”,其中Rowset临时表的实现进程较为复杂,但性能更高;游标的实现比较简单,但性能比较稳定。

以下是使用Rowset临时表实现MSSQL分页的代码示例:

declare @PageNum int ;--当前页数 
declare @PageSize int ; --每页显示行数
declare @rowCount int; --行数总计
set @PageNum=2;
set @PageSize=10;
select @rowCount=COUNT(1) from TableName;
declare @pagesCount int;--总页数
set @pagesCount=@rowCount/@PageSize;
if(@rowCount%@PageSize>0)
set @pagesCount=@pagesCount+1;
if(@PageNum>@pagesCount)
set @PageNum=@pagesCount;
if(@PageNum
set @PageNum=1;
declare @startRow int;
set @startRow=(@PageNum⑴)*@PageSize+1;
declare @EndRow int;
set @EndRow=@PageNum*@PageSize;

--借助Rowset临时表实现分页
--将所有数据copy进rownumber临时表
--获得从第startRow 行到第EndRow行
SELECT title,content FROM(
SELECT ROW_NUMBER()
OVER(ORDER BY ID) AS RowNumber,title,content
FROM TableName) As tempTab
WHERE RowNumber Between @startRow and @EndRow;

以上代码用来实现从表中获得每页要显示的数据,使用Rowset临时表映照到终究的查询结果中,并实现了分页效果。

另外,一种更简单的实现方式是使用MSSQL中的游标,以下是示例代码:

declare @PageNum int ;--当前页数 
declare @PageSize int ; --每页显示行数
declare @rowCount int; --行数总计
declare @pagesCount int;--总页数
set @PageNum=2;
set @PageSize=10;

select @rowCount=COUNT(1) from TableName;
set @pagesCount=@rowCount/@PageSize;
if(@rowCount%@PageSize>0)
set @pagesCount=@pagesCount+1;
if(@PageNum>@pagesCount)
set @PageNum=@pagesCount;
if(@PageNum
set @PageNum=1;

declare @i int;
set @i=1;

--建立游标
declare my_cur cursor
for select title,content from TableName
open my_cur ;
--开始循环游标
while @i
and @a+1
begin
fetch next from my_cur
into @title,@content
if (@PageNum⑴>=1)
begin --当要获得的页码大于1时,从上一页的最后一行开始取
if(@i>(@PageNum⑴)*@PageSize)
begin
print @title+'\t'+@content
set @i=@i+1
set @a=@a+1
end
end
if (@PageNum⑴=0)
begin --当要获得的页码等于1时,从第一行开始取
if(@i
begin
print @title+'\t'+@content
set @i=@i+1
set @a=@a+1
end
end
end

--关闭游标
close my_cur;
deallocate my_cur;

从上面代码可以看出,使用游标实现MSSQL分页也是比较简单的,之所以复杂是由于要严格依照页数划分,例如当要获得的页码大于1时,从上一页的最后一行开始取,当要获得的页码等于1时,从第一行开始取等。

总结以上,MS SQL Server利用于网站的分页实现的实现,有两种方法:一种是使用Rowset临时表,另外一种是使用游标,区别的实现方式有着区别的性能,

本文来源:https://www.yuntue.com/post/203076.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注