资源描述:
《sqlserver数据库三种分页方案详尽分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、SQLServer数据库三种分页方案详尽分析>>教育资源库 本文采用三种分页办法,最后对三种分页办法分析了其优缺点。 建立表: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)COLLATEChine
2、se_PRC_CI_ASNULL,[Note][nvarchar](2000)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO 插入数据:(2万条,用更多的数据测试会明显一些)SETIDENTITY_INSERTTestTableONdeclareiintseti=1e,LastName,Country,Note)values(i,'FirstName_XXX','LastName_XXX','Country_XXX','No
3、te_XXX') seti=i+1endSETIDENTITY_INSERTTestTableOFF 分页方案一: (利用NotIn和SELECTTOP分页) 语句形式:SELECTTOP10*FROMTestTableTestTable ORDERBYid))ORDERBYIDSELECTTOP页大小*FROMTestTable表 ORDERBYid))ORDERBYID 分页方案二: (利用ID大于多少和SELECTTOP分页) 语句形式:SELECTTOP10*FROMTestT
4、ableAX(id) FROM(SELECTTOP20id FROMTestTable ORDERBYid)AST))ORDERBYIDSELECTTOP页大小*FROMTestTableAX(id) FROM(SELECTTOP页大小*页数id FROM表 ORDERBYid)AST))ORDERBYID 分页方案三: (利用SQL的游标存储过程分页)create procedureXiaoZhengGesqlstrnvarchar(4000),
5、--查询字符串currentpageint,--第N页pagesizeint--每页行数assetnocountondeclareP1int,--P1是游标的idrowcountintexecsp_cursoropenP1output,sqlstr,scrollopt=1,ccopt=1,rowcount=rowcountoutputselectceiling(1.0*rowcount/pagesize)as总页数--,rowcountas总行数,currentpageas当前页setcurrentpage=(curr
6、entpage-1)*pagesize+1execsp_cursorfetchP1,16,currentpage,pagesizeexecsp_cursorcloseP1setnocountoff 其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。 建议优化的时候,加上主键和索引,查询效率会提高。 通过SQL查询分析器,显示比较:我的结论是: 分页方案二:(利用ID大于多少和SELECTTOP分页)效率最高,需要拼接SQL语句。 分页方案一:(利用NotIn和SELECTTOP分页)效率
7、次之,需要拼接SQL语句。 分页方案三:(利用SQL的游标存储过程分页)效率最差,但是最为通用。>>>>这篇文章来自..,。