电脑安全

您当前的位置:主页 > 电脑安全 >

sql server 千万级数据处理分页-网络编程

来源:[db:来源]标题:   代码    编辑:电脑技术全能网 时间:2019-09-19 18:30

原标题:sql server 千万级数据处理分页-网络编程
   ****** 工具: StoredProcedure [dbo].[sp_GetEmployee] 剧本日期: 11/12/2009 14:10:29 ******/Create PROCEDURE [dbo].[sp_GetPageList]@tblName varchar(255), -- 表名@strGetFields varchar(1000) = '*', -- 须要前往的列 @fldName varchar(255)='', -- 排序的字段名@PageSize int = 10, -- 页尺寸@PageIndex int = 1, -- 页码@OrderType bit = 0, -- 设置排序范例, 非 0 值则降序@strWhere varchar(1500) = '' -- 查问前提 (留神: 不要加 where)ASdeclare @strSQL varchar(5000) -- 主语句declare @strTmp varchar(110) -- 常设变量declare @strOrder varchar(400) -- 排序范例if @OrderType != 0beginset @strTmp = '<(select min'set @strOrder = ' order by [' + @fldName +'] desc'--假如@OrderType不是0,就履行降序,这句很主要!endelsebeginset @strTmp = '>(select max'set @strOrder = ' order by [' + @fldName +'] asc'endif @PageIndex = 1beginIF @strWhere != '' SET @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @tblName + '] where ' +@strWhere + ' ' + @strOrderELSESET @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName + '] '+ @strOrder--假如是第一页就履行以上代码,如许会放慢履行速率endelsebegin--以下代码给予了@strSQL以真正履行的SQL代码set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'+ @strOrderif @strWhere != ''set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrderendif @strWhere !=''SET @strSQL = @strSQL+';Select count(*) AS Total FROM [' + @tblName + '] Where '+@strWhereelseset @strSQL = @strSQL+';Select count(*) AS Total FROM [' + @tblName + ']'--以上代码的意义是假如@doCount通报过去的不是0,就履行总数统计。以下的全部代码都是@doCount为0的情形exec (@strSQL)温馨提醒,如采纳视图+非聚拢索引速率会更快,经测试,能够支撑万万级数据处置