SQLServer数据库三种分页方案详尽分析

SQLServer数据库三种分页方案详尽分析,第1张

SQLServer数据库三种分页方案详尽分析,第2张

本文采用了三种分页方法,最后分析了它们的优缺点。

建立表格:

创建表[test TABLE](
[ID][int]IDENTITY(1,1) NOT NULL,
[first name][nvarchar](100)COLLATE Chinese _ PRC _ CI _ AS NULL,
[last name][nvarchar](100)COLLATE Chinese _ PRC _ CI _ AS NULL,
[Country][nvarchar](50)COLLATE Chinese _ PRC _ CI _ AS NULL,
[Note][nvarchar](2000)COLLATE Chinese _ PRC _ PRC

在上设置IDENTITY_INSERT TestTable

声明@ I int
set @ I = 1
while @ I
(SELECT MAX(ID)
FROM(SELECT 20 ID
FROM test table
ORDER BY ID)AS T))
ORDER BY ID


SELECT page size * FROM test table where(id >
(SELECT max(id)
FROM(SELECT page size * page id
FROM table
order by id)as t))order by id
[/br

(SQL的游标存储过程分页)
Create procedure xiaozhengge
@ sqlstrnvarchar(4000),-查询字符串
@currentpage int,-page n
@ pagesizeint-每页行数
as
set no count on
declare @ p1int,- P1是游标的id
@ rowcountint
execsp _ cursoropen @ P1 output,@ sq @ rowcount = @ rowcount output
select ceiling(1.0 * @ rowcount/@ pagesize)
作为总页数-,@ rowcount作为总行数,@currentpage作为当前页
set @ currentpage =(@ current page-1)* @ pagesize+1
execsp _ cursor fetch @ P1,16,@ current page,@ pagesize
execsp _ cursor close @ P1

其他方案:如果没有主键,可以使用临时表或者第三种方案,但是效率会低。

优化时,添加主键和索引会提高查询效率。

通过SQL查询分析器,展示比较:我的结论是:

分页方案二:(ID大于且选择的分页)效率需要拼接SQL语句。

分页方案1:(用Not In和SELECT分页)第二高效,需要拼接SQL语句。

分页方案三:(SQL的游标存储过程分页)效率最低,但最常用。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQLServer数据库三种分页方案详尽分析

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情