博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分页存储过程优化--同时返回数据总数
阅读量:4687 次
发布时间:2019-06-09

本文共 1860 字,大约阅读时间需要 6 分钟。

没有MySql般方便的limit分页,在MSSQL中需要分页查询数据的话,就只好写存储过程了。。。

not in方式的分页性能差,创建变量表的方式相对来说,应该要好些。(MSSQL2000)

之前都是获取分页数据、获取数据总数分开写,也就是做两次查询。

某天突然想了想,干脆把这两步操作都写到分页查询里,返回分页数据的同时,把数据总数也返回。

这么做有什么好处呢?

  1、减少一次数据库请求。

  2、查询条件很多时,就只需拼一次SQL了。

  3、方便维护

  4、。。。。。。

这几个理由,足够了,那么就实践吧。

 

-- ============================================= -- Author:        Henson -- Create date: 2011-06-01 -- Description:    根据查询条件返回符合的条件的数据总数及当页数据 -- ============================================= CREATEPROCEDURE[dbo].[ST_GetPagedData] @MbCdvarchar(12),--会员编号 @MbNamevarchar(20),--会员姓名 @PageSizeint,--每页显示的记录数 @CurrPageint, --当前页索引 @RecordCountint output --总记录数(输出参数) AS BEGIN Declare@strSqlvarchar(4000) Declare@strWherevarchar(1000) --根据参数生成Where条件 Set@strWhere='' If (isnull(@MbCd,'') !='') Begin Set@strWhere=@strWhere+' And MB_CD='''+@MbCd+'''' End If (isnull(@MbName,'') !='') Begin Set@strWhere=@strWhere+' And Name like ''%'+@MbName+'%''' End --获取记录总数 Declare@strCountSqlnvarchar(1000) Set@strCountSql='Select @RecordCount=count(*) From M_Account a  Where 1=1 '+@strWhere exec sp_executesql @strCountSql, N'@RecordCount int output',@RecordCount output --print (@strCountSql)     --获取数据     declare@topIdNumint ,@delNumint set@topIdNum=@PageSize*@CurrPage set@delNum= (@CurrPage-1)*@PageSize set@strSql='         DECLARE @temptb table         (             uid int identity(1,1),               Mb_Cd varchar(12)         )         Insert Into @temptb(Mb_Cd)         Select Top '+cast( @topIdNumasvarchar(10) )+' a.Mb_Cd,         From M_Account a         Where 1=1 '+@strWhere+N'         delete from @temptb where uid<='+cast( @delNumasvarchar(10) )+N'         Select *         From M_Account a             Inner Join @temptb b On a.Mb_Cd=b.Mb_Cd ' exec (@strSql) END

 

嗯,就是这样。

然后在调用时,将输出参数的值,也一并获取,就OK了。

(如有不妥或可以完善的地方,还请指出,不胜感激!!!)

转载于:https://www.cnblogs.com/uphenson/archive/2011/07/25/2116344.html

你可能感兴趣的文章
端口扫描base
查看>>
iOS IM开发的一些开源、框架和教程等资料
查看>>
FansUnion:共同写博客计划终究还是“流产”了
查看>>
python 二维字典
查看>>
编译原理实验一
查看>>
Git for Android Studio 学习笔记
查看>>
pip 警告!The default format will switch to columns in the future
查看>>
Arrays类学习笔记
查看>>
实验吧之【天下武功唯快不破】
查看>>
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>