手机
当前位置:查字典教程网 >编程开发 >ASP教程 >SQL Server 存储过程的分页
SQL Server 存储过程的分页
摘要:建立表:CREATETABLE[TestTable]([ID][int]IDENTITY(1,1)NOTNULL,[FirstName][n...

建立表:

CREATETABLE[TestTable](

[ID][int]IDENTITY(1,1)NOTNULL,

[FirstName][nvarchar](100)COLLATEChinese_PRC_CI_ASNULL,

[LastName][nvarchar](100)COLLATEChinese_PRC_CI_ASNULL,

[Country][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,

[Note][nvarchar](2000)COLLATEChinese_PRC_CI_ASNULL

)ON[PRIMARY]

GO

插入数据:(2万条,用更多的数据测试会明显一些)

SETIDENTITY_INSERTTestTableON

declare@iint

set@i=1

while@i<=20000

begin

insertintoTestTable([id],FirstName,LastName,Country,Note)values(@i,''FirstName_XXX'',''LastName_XXX'',''Country_XXX'',''Note_XXX'')

set@i=@i+1

end

SETIDENTITY_INSERTTestTableOFF

-------------------------------------

分页方案一:(利用NotIn和SELECTTOP分页)

语句形式:

SELECTTOP10*

FROMTestTable

WHERE(IDNOTIN

(SELECTTOP20id

FROMTestTable

ORDERBYid))

ORDERBYID

SELECTTOP页大小*

FROMTestTable

WHERE(IDNOTIN

(SELECTTOP页大小*页数id

FROM表

ORDERBYid))

ORDERBYID

-------------------------------------

分页方案二:(利用ID大于多少和SELECTTOP分页)

语句形式:

SELECTTOP10*

FROMTestTable

WHERE(ID>

(SELECTMAX(id)

FROM(SELECTTOP20id

FROMTestTable

ORDERBYid)AST))

ORDERBYID

SELECTTOP页大小*

FROMTestTable

WHERE(ID>

(SELECTMAX(id)

FROM(SELECTTOP页大小*页数id

FROM表

ORDERBYid)AST))

ORDERBYID

-------------------------------------

分页方案三:(利用SQL的游标存储过程分页)

createprocedureXiaoZhengGe

@sqlstrnvarchar(4000),--查询字符串

@currentpageint,--第N页

@pagesizeint--每页行数

as

setnocounton

declare@P1int,--P1是游标的id

@rowcountint

execsp_cursoropen@P1output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcountoutput

selectceiling(1.0*@rowcount/@pagesize)as总页数--,@rowcountas总行数,@currentpageas当前页

set@currentpage=(@currentpage-1)*@pagesize+1

execsp_cursorfetch@P1,16,@currentpage,@pagesize

execsp_cursorclose@P1

setnocountoff

其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。

建议优化的时候,加上主键和索引,查询效率会提高。

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

分页方案二:(利用ID大于多少和SELECTTOP分页)效率最高,需要拼接SQL语句

分页方案一:(利用NotIn和SELECTTOP分页)效率次之,需要拼接SQL语句

分页方案三:(利用SQL的游标存储过程分页)效率最差,但是最为通用

在实际情况中,要具体分析。

【SQL Server 存储过程的分页】相关文章:

结合asp和存储过程做的搜索程序

ASP调用带参数存储过程的几种方式

本人常用的分页代码

在ASP中调用存储过程的几种方法

ASP在SQL Server 2000中新建帐号和权限

asp调用存储过程

叶子asp分页类

关于使用存储过程创建分页

查看所有的Server Variables的环境变量

ASP Request对象的使用

精品推荐
分类导航