三种SQL分页法效率分析

三种SQL分页法效率分析,第1张

三种SQL分页法效率分析,第2张

表中的主键必须是标识列,[ID] int IDENTITY (1,1)

1.寻呼方案1:(按不在和选择寻呼)

声明形式:

select 10 *
FROM test table
where(idno tin
(select 20 id
FROM test table
order byid
select page size *
test table
where(idno tin
(select page size * page id
,FROM table
order byid))
order byid

2.寻呼方案2:(ID大于且选择的寻呼)

声明形式:

SELECT 10 *
FROM test table
WHERE(ID >
(SELECT max(ID)
FROM(SELECT 20 ID
FROM test table
order byid]AST)]
order byid
SELECT page size *
FROM test table
WHERE(ID >
(SELECT max(ID)
FROM(SELECT page size * page ID
FROM

3.分页方案3:(使用SQL的游标存储过程分页)

create procedure SQL pager
@ sqlstrnvarchar(4000),-query string
@ current pagent,-page n
@ pagesizeint-rows per page
as
setno counton
declare @ p1int,-P1是游标的ID
@ rowcount int
execsp _ cursoropen @ @ scrollopt = 1,@ ccopt = 1,@ rowcount = @ rowcount output @ currentpage as current page
set @ current page =(@ current page-1)* @ pagesize+1
execsp _ cursor fetch @ P1,16,@ current page,@ pagesize
execsp _ cursor close @ P1[/br/

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

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

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

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

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

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

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

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情